1

現在ログインしているユーザーとは別のユーザーとしてexeを実行できます(「実行」を使用)。

たとえば、Windows に「user1」としてログインし、「User2」の資格情報を使用して「run as」で実行可能ファイルを開始します。

「User2」(プロセスが実行されている)ではなく、「User1」(現在ログインしているユーザー)のユーザー名/IDを取得する方法は?

System.Environment.UserNameつまり、User2 を指定します (予想どおり) 。

4

2 に答える 2

3

WindowsIdentity.GetCurrent(). _ または、プロパティを介してログインしているユーザー名を取得できEnvironment.UserNameます。ただし、現在のプロセスを実行しているユーザーであるとは限りません。

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

http://msdn.microsoft.com/en-us/library/system.environment.username.aspxを参照してください

于 2013-05-03T05:47:49.950 に答える
1

私はこれが古い質問であることを知っていますが、おそらくこの解決策は誰かにとって役立つでしょう.

「QWinsta」または「Query Session」を使用して、現在のセッション ユーザー (アプリを実行したユーザーではありません) を取得できます。

このコードは、「console」パラメーターを使用して QWinsta を実行するプロセスを作成します。これを行うと、次のような結果が得られます。

コンソールパラメーターを指定して QWinsta コマンドを実行する CMD

次に、「StartInfo.RedirectStandardOutput」と「StandardOutput.ReadToEnd()」でその結果をキャッチし、分割して「">console」を検索し、インデックスを変数に保存します。最後に「index+1」でユーザーを取得できます。分割配列で。

セキュリティのために、「Proc.WaitForExit(2000)」を追加して、タスクを停止する前に最大 2 秒待つか、永久に待機し、エラーが発生するのを防ぐために「Proc.ExitCode != 0」を追加しました。

Process Proc = new Process();
Proc.StartInfo.UseShellExecute = false;
Proc.StartInfo.CreateNoWindow = true;
Proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Proc.StartInfo.FileName = @"qwinsta.exe";
Proc.StartInfo.Arguments = @"console";
Proc.StartInfo.RedirectStandardOutput = true;
Proc.Start();
if (!Proc.WaitForExit(2000) || Proc.ExitCode != 0)
{
    try { Proc.Kill(); } catch { }
    return null;
}
string Resultado = Proc.StandardOutput.ReadToEnd();
string[] Textos = Resultado.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
int Indice = 0;
foreach (string TXT in Textos) { if (TXT == ">console") { break; } else Indice++; }
return Textos[Indice + 1];

注: 「QWinsta」または「クエリ セッション」を使用する場合は、2 つの方法があります。

最初: QWinsta.exe をコピーします。

C:\windows\system32 をアプリのルート フォルダーに配置します (常にコピー オプションを使用することを忘れないでください)。

2 番目: StartInfo を処理するために UserName と Password を提供しますが、管理者の資格情報が必要で、Password は「system.Security.SecureString」でなければなりません。

注 2: すべてのバージョンの Windows に Windows 10 Student N のような QWinsta.exe があるわけではありませんが、他の Windows から「QWinsta.exe」をコピーして使用することができます。

このコードは、Win10 および Win8 でテストされています。

于 2018-10-22T16:26:02.093 に答える