2009-12-09 228 views
4

asp.net運行程序,我需要使用管理員帳戶和啓用桌面交互運行從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(); 

問候, 托馬斯

+0

所有你能做的就是設置應用程序池標識的帳戶是本地管理員組(如本地系統)英寸但在網絡應用程序中調用控制檯應用程序絕不是最佳做法。 – 2013-11-04 02:37:26

回答

0

,你可以使用模擬,還有一個例子here

個人而言,我不喜歡在asp.net模擬,你需要處理的密碼或者沒有被改變或在代碼中更改它們。沒有辦法像asp.net用戶那樣運行你想要的東西嗎?

編輯:

你可以acyually通過使用「網絡服務」作爲用戶名冒充網絡服務,這將至少allieviate密碼發出一點,

+1

不幸的是,ASP.NET的帳戶沒有模擬權限,所以我不能從ASP.NET登錄管理員帳戶。似乎閉環。 – Tomas 2009-12-09 14:51:40

0

您可以使用清單文件和將其構建到您的控制檯應用程序中,該應用程序將指示它始終在管理員帳戶下運行。看到這個example

如果這不適合你,那麼你可以嘗試傳入管理員帳戶憑據在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(); 
+0

不知道如何嵌入清單文件可以獲取這是由網絡服務帳戶(ASP.NET)運行控制檯管理員權限。 我已經嵌入清單文件到我的控制檯應用程序,但按預期它只能在asp.net帳戶下運行。 <?xml version =「1.0」encoding =「utf-8」?> Tomas 2009-12-09 14:15:08

+0

參見http://msdn.microsoft.com/en-us/library/bb756929。 aspx以獲取更多關於實際參數意味着什麼的詳細信息,但如果使用「requireAdministrator」,則它應該以Admin帳戶運行。 – James 2009-12-09 14:45:10

0

另一個用戶已經建議模仿。如果這足夠好,那麼你去。就像他說的那樣,有些維護令人頭疼,有些安全問題。

,我已經在過去這可能會或可能不會適用於您的情況中使用的一些選項有:

  1. 如果任務是在一個可預測的時間表,只是將它添加到任務計劃Windows,設置適當的工人帳戶(管理員,或其他),讓我們走吧。我相信也有以編程方式觸發計劃任務的方法,但我從來沒有這樣做過。谷歌搜索應該讓你去。

  2. 實現控制檯應用程序邏輯作爲下適當的帳戶運行的服務。然後讓服務從您的Web應用程序偵聽「觸發器」 - 文件放置或更簡單的操作。

無論哪種方式的想法是爲了避免存儲您的ASP頁面中的任何credientials,並沒有給予它並不需要一個過程的權利。