2

C#アプリケーションが別のユーザーによって実行されている場合、現在ログオンしているWindowsユーザーを取得する方法でRun as?

WindowsIdentity.GetCurrent();常にRun asユーザーまたは偽装ユーザーを提供します。ユーザー名とユーザーアカウントの種類にログオンしたウィンドウが必要です。

4

3 に答える 3

1

WMI を使用してログオン ユーザー セッションを取得してみます: "Select * from Win32_LogonSession Where LogonType = 2"

于 2012-08-14T12:39:25.603 に答える
1

私の知る限り、これを実現できる特殊なケースが 1 つだけあります。オペレーティング システムが非サーバー (Windows XP/Vista/7) で、高速ユーザー切り替えが無効になっている必要があります。

この場合、「現在ログオンしている Windows ユーザー」は単に explorer.exe プロセスの所有者です。

それが適切である場合は、後でサンプル コードを作成して、これを行う方法を示します。

C# でプロセスの所有者を特定するにはどうすればよいですか? (コードサンプルあり)

プロセスの所有者の UserName を取得するにはどうすればよいですか? (より高度なテクニックへのリンク)

いくつかの短いコードがすぐに来ます。

于 2012-08-14T12:24:51.610 に答える
0

ASP.NET サーバー側コードが偽装コンテキストで実行され、ネットワーク リソースにアクセスできないという問題を解決するために、数年前にUnimpersonatorというクラスを作成しました。

現在の偽装コンテキストをキャプチャし、すべての偽装を元に戻してログオン アカウントに戻り、オブジェクトが破棄されると再度偽装します。

// Running as impersonated account.
using (new Unimpersonator())
{
   // Running as logged-in-account
}
// Running as impersonated account again.
于 2012-08-14T13:13:56.297 に答える