0

.NET 3.5 で C# を使用しています

ここでの私の目標は、ログインしたユーザー名を取得し、このユーザー名でプロセスを開始することです。通常はProcess.Start(pathToProgram)ここで簡単に解決できますが、問題はインストーラー クラスからこの行を呼び出していることです。つまり、msiexec は現在動作しており、取得したユーザー名は現在 Windows にログインしている実際のユーザーではなく SYSTEM です。

もちろんEnvironment.UserName、ログインしているユーザーの代わりに「SYSTEM」も返します。

ユーザーSYSTEMとしてではなく、ログインしたユーザーとしてプロセスを開始するにはどうすればよいですか?

4

2 に答える 2

0

呼び出すとEnvironment.UserName、現在のプロセスによって偽装されたユーザーの値が取得されますが、呼び出すとEnvironment.GetEnvironmentVariable("USERNAME")、プロセスを開始したユーザーの名前が取得され、その時点でプロセスは開始されておらず、もちろん開始されていませんまだ別のユーザーになりすました。

ただし、これはOPの質問でうまくいくと思われる生の考えにすぎませんが、私の主張を確認するために参考資料を検索しています.
この事実をよく理解し、私よりもうまく説明できる人を歓迎します

于 2013-07-28T14:09:10.123 に答える
0

次のように、現在ログインしているユーザーのuserNameを取得できます-

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 に答える