簡體   English   中英

如何從asp.net Web服務在特定帳戶下運行外部exe?

[英]How to run external exe under specific account from asp.net web service?

波紋管是我從asp.net服務嘗試運行某些外部exe的代碼。 在win 7上,我的Visual Studio正常運行,但在我的服務器(服務器2008)上失敗。 Myapp.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。

如果工作進程所運行的帳戶缺少足夠的特權,那么您可以選擇幾種方法。

您可以在代碼中使用模擬:

WindowsIdentity.Impersonate方法

或將IIS配置為以具有所需特權的用戶帳戶運行該應用程序。

這是一篇文章,介紹了模擬安全性的不同方法:

了解ASP.NET模擬安全性

如果您對自己實現用戶模擬代碼的信心不足,請訪問以下代碼項目文章鏈接:

用於模擬用戶的小型C#類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM