0

我在 .NET 3.5 中使用 C#

我的目标是获取登录的用户名,然后简单地在这个用户名下启动一个进程。通常一个简单Process.Start(pathToProgram)的方法会有所帮助,但问题是我从安装程序类调用这一行,这意味着 msiexec 当前正在工作并且我得到的用户名是 SYSTEM 而不是当前登录到 Windows 的实际用户。

当然,这Environment.UserName也会返回“SYSTEM”而不是登录用户。

如何以登录用户而不是用户 SYSTEM 身份启动该过程?

4

2 回答 2

0

我认为,当您调用时,您将Environment.UserName获得当前进程模拟的用户的值,而如果您调用,Environment.GetEnvironmentVariable("USERNAME")您将获得启动进程的用户的名称,此时进程尚未启动,当然,还没有却冒充另一个用户。

然而,这只是一个似乎适用于 OP 问题的原始想法,但我仍在搜索一些参考资料以确认我的断言。
我欢迎任何对这一事实有更好理解并比我解释得更好的人

于 2013-07-28T14:09:10.123 回答
0

您可以像这样获取当前登录用户的用户名 -

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();
于 2013-07-28T12:48:46.030 回答