2012-08-15 26 views
1

我写这个代码启动一个进程:无法启动的过程在C#

var proc = new Process(); 
proc.StartInfo.Arguments = string.Format("{0} {1}", inputFilePath, outputFilePath); 
proc.StartInfo.FileName = @Settings.GetImageMagickConvertPath(); 
proc.StartInfo.CreateNoWindow = false; 
proc.StartInfo.UseShellExecute = false; 
proc.Start(); 

这工作完全在本地。但是当我把这段代码放到远程机器上时,这段代码不再起作用(错误是“尝试启动proc时”访问被拒绝“)。所以,我已经添加了我使用,以便使用RDC(用户/密码)启动过程中连接的凭据:

proc.StartInfo.UserName = "user"; 

System.Security.SecureString secret = new System.Security.SecureString(); 

foreach (char c in "pass") 
    secret.AppendChar(c); 

proc.StartInfo.Password = secret; 

,但我仍然收到了同样的错误......

你们是否看到什么可以解决这个问题?

+0

哪个操作系统(一个或多个)参与? – Neil 2012-08-15 23:45:32

+0

您是否必须传递用户名密码,或许远程计算机需要服务帐户用户/ pw尝试使用用户名密码传递凭证,或许它期望域/用户密码 – MethodMan 2012-08-15 23:48:17

+1

将整个拒绝访问异常转储到磁盘并查看详细信息。我的猜测是这是一个NTFS ACL问题。这是来自ASP.NET/WCF进程吗?如果是这样,请检查您的应用程序池标识和模拟设置。 – Dai 2012-08-15 23:59:14

回答

0

好的,现在就解决了。

基本上我有两个问题:

  1. 的过程,开始是不正确的(而不是folder/program.exe我把错误folder/和我收到“访问被拒绝”,这让我的生活是一场噩梦的路径(开始寻找权利,账户等)。如果微软改进了这个错误,例如“进程的路径错误”,那么结果会不错。

  2. 我必须将其作为本地服务(应用程序池)而不是应用程序池标识运行。 (和不需要启动信息凭证)参与

操作系统:Windows 2008服务器R1)