2015-10-26 29 views
0

我有程序,我啓動USMT(加載或scanstate)與域用戶,在本地計算機上給予管理權限。這在Windows 7中工作得非常好。C#Process.Start與另一個用戶不工作在Windows 8/10

程序需要以非管理員用戶身份啓動,但以管理員權限執行load/scanstate。

但是,當正確運行load/scanstate時會失敗,因爲它沒有正確提升。但是,我如何克服這一點,沒有管理權限?

問候 托馬斯·尼森

 ProcessStartInfo restoreProcessInfo = new ProcessStartInfo 
     { 
      Verb = "runas", 
      UseShellExecute = false, 
      Domain = strAdminDomain, 
      UserName = strAdminUsername, 
      Password = strAdminPassword, 
      FileName = loadstate.exe", 
      Arguments = "blablabla" 
     } 
+0

你的意思是你的exe可以由非管理員用戶執行,但是exe文件中的一段邏輯必須以提升的權限執行? – Kurubaran

+0

正確,load-和scanstate需要管理權限才能運行。但用戶不是管理員,因此無法直接運行。因此,我需要用另一個用戶開始的流程,爲他們提供本地管理員權限。 – user2931144

回答

0

據我所知,在「運行方式」動詞(動詞的任何,真的)當UseShellExecute設置爲true只尊重。嘗試將UseShellExecute設置爲true,同時使用WindowStyle屬性隱藏shell窗口。

但是,這會阻止您從流程中捕獲輸入和輸出流。你有興趣做什麼?

+0

是的,我也得出結論,runas不工作,如果它不在那裏,至少當UseShellExecute是假的。不過,我不能將UseShellExecute設置爲true,因此我無法從提供的用戶名和密碼開始。我還需要打開窗口,否則我無法瞭解進程的進展情況,以及我需要並退出代碼的情況。 – user2931144

+0

您仍將獲得退出代碼,但I/O流將不可用於您的應用程序。 當然,隱藏窗口是可選的。 – user5488406

+0

好的,但仍然存在UseShellExecute爲true的問題,不允許我使用ProcessStartInfo的用戶名和密碼參數 – user2931144

0

您可以模擬用戶。模擬是線程使用與擁有線程的進程不同的安全信息來執行的能力。

檢查this如何實施模擬的線程。因此,這個過程將首先用windows域用戶的權限執行,並且放置在模擬塊內的邏輯將與模擬用戶的權限一起執行。

​​
相關問題