質問

このコードを使用して、現在ログインしているユーザーのGUIDとSIDを取得できます。

UserPrincipal user = System.DirectoryServices.AccountManagement.UserPrincipal.Current;
Console.WriteLine("{0}, {1}", user.Guid, user.Sid);
.

しかしながら、ユーザがネットワークに接続されずにログインした場合、そのコードは失敗した(「サーバに連絡できない」)。このように接続されていなくても、そのユーザーのSIDを取得できます。

WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
Console.WriteLine("{0}", identity.User.Value);
.

しかし、私が言うことができる限り、WindowsIdentityオブジェクトにはGUIDが含まれていません。

ネットワークに接続されていない場合は、現在のユーザーのGUIDを取得できますか?

注:これはWebアプリではなくデスクトップアプリケーションです。

役に立ちましたか?

解決

セキュリティ識別子(SID)は各プロセストークンの一部であり、それは実際のユーザー識別子です。Workgroupに入っているときは、Active-Directoryのユーザーオブジェクトの属性として保存されているドメイン内のSAM(レジストリの一部)に保存されている場合は、

GUIDは、アクティブディレクトリ内のユーザーオブジェクトの属性でもありますが、このオブジェクトのユニック性を保証する主な目的です。

GUIDを理解している限り、Windowsのセキュリティの一部ではないので、それは不明瞭なモードでは利用できません。

他のヒント

SIDはユーザーのセキュリティトークンに保存されているため、オフラインにアクセスできる理由です。GUIDは、森林内移動中(同じ森の中のドメイン間で)保存されているので、それをあなたの鍵として使うことは良い考えです。変更されることはないので、あなたが最初にアプリを起動したときにユーザーのGUIDをレジストリに保持しないのですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top