我运行一个Web服务器上的一些ASP.NET/C#代码的批处理文件运行。基本上,批处理文件使用psloggedon和pexec等工具在VM上执行一些测试自动化任务。确保的Process.Start()下的登录用户
如果我手动运行该批处理文件时,我下的管理帐户登录到服务器,它工作正常。
,当我从我的代码(下)运行它我的问题来了,这似乎给“SYSTEM”帐户下运行,并psloggedon等似乎不正常工作。
代码
Process p = new Process();
p.StartInfo.FileName = "C:\SetupVM.bat";
p.Start();
p.WaitForExit();
我在我的web.config得到这个,它似乎并没有做任何迪菲昂斯?
<identity impersonate="true" userName="Administrator" password="myadminpassword"/>
是否有无论如何我可以确保批处理文件在'管理员'帐户下运行?
更新的代码
Process p = new Process();
p.StartInfo.FileName = "C:\\SetupVM.bat";
p.StartInfo.UserName = "Administrator";
p.StartInfo.UseShellExecute = false;
p.StartInfo.WorkingDirectory = "C:\\";
string prePassword = "myadminpassword";
SecureString passwordSecure = new SecureString();
char[] passwordChars = prePassword.ToCharArray();
foreach (char c in passwordChars)
{
passwordSecure.AppendChar(c);
}
p.StartInfo.Password = passwordSecure;
p.Start();
p.WaitForExit();
从MSDN:
当UseShellExecute是假的,你就可以开始只与Process组件可执行文件。
也许这是因为我试图运行.bat文件的问题?
谢谢。
嗨,你有没有解决这个问题我已经试过相同,但还是它不工作 – sudheshna 2012-05-07 08:52:53