貝婁是我從asp.net服務試圖運行一些外部exe文件的代碼。它在我的Visual Studio上運行得很好,但在我的服務器(服務器2008)上失敗。Myapp.exe報告錯誤,該帳戶下運行沒有sufficiet priviliges。在服務器上如何從asp.net web服務的特定帳戶下運行外部exe文件?
List<ProcInfo> allProcesses = new List<ProcInfo>();
ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName = binPath + @"\myApp.exe";
pInfo.WindowStyle = ProcessWindowStyle.Hidden;
pInfo.CreateNoWindow = true;
pInfo.UseShellExecute = false;
pInfo.RedirectStandardOutput = true;
string exitMsg = "";
int exitCode = 1;
try
{
using (Process proc = Process.Start(pInfo))
{
exitMsg = proc.StandardOutput.ReadToEnd();
proc.WaitForExit(1000);
exitCode = proc.ExitCode;
}
}
資源池下的帳戶使用與足夠權限,我還試圖用同一個帳戶中的代碼與那些相同的憑據,仍然沒有啓動服務。
我被告知,asp.net工作線程運行的帳號會施加一些額外的限制。所以即使資源池在適當的帳戶下運行,您仍然沒有足夠的特權。 我還發現了一些關於使用pInvoke和win32 api調用作爲從asp.net服務運行外部代碼的唯一方法。但我沒有任何win32 API知識,也沒有找到這方面的例子。
我將非常感謝任何提示/示例如何從asp.net服務運行指定帳戶下的外部exe文件。
我試着在最後一個鏈接上的代碼,但它不適合我。我還注意到有關代碼不能用於新窗口系統的評論。我想我必須學習前兩個鏈接,然後嘗試把東西放在一起。 – Primoz
也許我有這方面的問題:
請注意:啓動模擬(即不是它切換到的用戶上下文)的用戶上下文需要具有「作爲操作系統的一部分」權限集。 – Primoz
確保工作進程正在運行的帳戶具有[作爲操作系統的一部分](http://technet.microsoft.com/en-us/library/dd349804(WS.10).aspx#BKMK_3)用戶權限。我知道這在2008年的服務器上工作,因爲我自己使用它。編輯..只是注意到你的上述評論。檢查是否是這種情況。 – jdavies