当前位置:  开发笔记 > 编程语言 > 正文

如何获取当前Windows帐户的SID?

如何解决《如何获取当前Windows帐户的SID?》经验,为你挑选了3个好方法。

我正在寻找一种简单的方法来获取当前Windows用户帐户的SID.我知道我可以通过WMI做到这一点,但我不想走那条路.

向在C#中回答的所有人道歉,因为没有指定它的C++.:-)



1> Roger Lipsco..:

在Win32中,调用GetTokenInformation,传递令牌句柄和TokenUser常量.它将为您填写TOKEN_USER结构.其中一个元素是用户的SID.它是BLOB(二进制),但您可以使用ConvertSidToStringSid将其转换为字符串.

要获取当前令牌句柄,请使用OpenThreadToken或OpenProcessToken.

如果你更喜欢ATL,它有CAccessToken类,里面有各种有趣的东西.

.NET具有Thread.CurrentPrinciple属性,该属性返回IPrincipal引用.你可以得到SID:

IPrincipal principal = Thread.CurrentPrincipal;
WindowsIdentity identity = principal.Identity as WindowsIdentity;
if (identity != null)
    Console.WriteLine(identity.User);

同样在.NET中,您可以使用WindowsIdentity.GetCurrent(),它返回当前用户ID:

WindowsIdentity identity = WindowsIdentity.GetCurrent();
if (identity != null)
    Console.WriteLine(identity.User);



2> dex black..:
ATL::CAccessToken accessToken;
ATL::CSid currentUserSid;
if (accessToken.GetProcessToken(TOKEN_READ | TOKEN_QUERY) &&
    accessToken.GetUser(¤tUserSid))
    return currentUserSid.Sid();



3> Jeffrey Meye..:

这应该给你你需要的东西:

使用System.Security.Principal;

...

var sid = WindowsIdentity.GetCurrent().User;

WindowsIdentity的User属性返回每个MSDN Docs的SID

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有