ネットワークから切断されたときのユーザーGUID
-
09-12-2019 - |
質問
このコードを使用して、現在ログインしているユーザーの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をレジストリに保持しないのですか?
所属していません StackOverflow