簡體   English   中英

asp.net 使用管理員帳戶運行程序

[英]asp.net run program with Administrator account

我需要使用管理員帳戶從 ASP.NET 應用程序運行一個控制台應用程序並啟用桌面交互。 我嘗試了下面的代碼,控制台應用程序運行正常,但在 NETWORK SERVICE 帳戶中。 任何想法如何在管理員帳戶下運行控制台?

    string enginePath = Server.MapPath(@"~/engine/MyConsole.exe");
    System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(enginePath, "");
    System.Diagnostics.Process p = System.Diagnostics.Process.Start(info);            
    p.WaitForExit();

問候,托馬斯

你可以使用模擬,這里有一個例子

就我個人而言,我不喜歡在 asp.net 中進行模擬,您需要處理不更改密碼或在代碼中更改密碼。 有沒有辦法以 asp.net 用戶的身份運行你想要的東西?

編輯:

您可以通過使用“NETWORK SERVICE”作為用戶名來模擬網絡服務,這至少可以稍微減輕密碼問題,

您可以使用清單文件並將其構建到您的控制台應用程序中,該應用程序將指示它始終在管理員帳戶下運行。 請參閱此示例

如果這對您不起作用,那么您可以嘗試在ProcessStartInfo屬性中傳遞管理員帳戶憑據,例如

string enginePath = Server.MapPath(@"~/engine/MyConsole.exe");
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(enginePath, "");
info.UserName = "Administrator";
info.Password = "Password";
System.Diagnostics.Process p = System.Diagnostics.Process.Start(info);                p.WaitForExit(); 

另一個用戶已經建議冒充。 如果這足夠好,那就去吧。 不過,就像他說的那樣,需要處理一些維護難題和一些安全隱患。

我過去使用的一些選項可能適用於您的情況,也可能不適用於您的情況:

  1. 如果任務在可預測的計划中,只需將其添加到 Windows 中的計划任務中,設置適當的工作人員帳戶(管理員或其他),然后放手。 我相信還有一些方法可以以編程方式觸發計划任務,但我從來沒有這樣做過。 谷歌搜索應該讓你繼續前進。

  2. 將控制台應用程序邏輯實現為在適當帳戶下運行的服務。 然后讓服務從您的網絡應用程序中偵聽“觸發器”——文件刪除或更簡單的東西。

無論哪種方式,想法都是避免在您的 ASP 頁面中存儲任何憑據,並且不必授予它不需要的進程權限。

暫無
暫無

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

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