簡體   English   中英

獲取登錄的用戶名以激活進程

[英]Getting the logged in user name to activate a process with

我在C#和.NET 3.5中使用

我的目標是獲取登錄的用戶名,然后簡單地以該用戶名啟動進程。 通常,一個簡單的Process.Start(pathToProgram)在這里會有所幫助,但是問題是我正在從安裝程序類中調用此行,這意味着msiexec當前正在工作,而我得到的用戶名是SYSTEM,而不是當前的實際用戶。登錄到Windows。

當然,該Environment.UserName也會返回“ SYSTEM”,而不是已登錄的用戶。

如何以登錄用戶而不是系統用戶身份啟動進程?

您可以像這樣獲得當前登錄用戶的用戶名-

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

SO后 -

Process p = new Process();
p.StartInfo.FileName = "C:\SetupVM.bat";
p.StartInfo.UserName = userName;
p.StartInfo.Password = "AdminPassword";
p.Start();
p.WaitForExit();

我認為,當您調用Environment.UserName將獲得當前進程模擬的用戶的值,而如果您調用Environment.GetEnvironmentVariable("USERNAME") ,則將獲得啟動該進程的用戶的名稱,然后進程尚未啟動,並且當然還沒有模仿其他用戶。

但是,這只是一個原始想法,似乎對OP問題有用,但我仍在搜索一些參考資料以確認我的主張。
我歡迎任何對這一事實有更好理解的人,並比我更好地解釋它

暫無
暫無

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

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