我運行一個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