将SID字符串格式转换为字节数组

dev*_*dev 2 .net c# sid

我想将SID字符串格式转换为字节数组表示形式,然后将其提供给LookupAccountSid()C#中方法的第二个参数.但我没有找到任何特定的内置功能,可以做到这一点.例如:

SID = S-1-5-32-544

可以转换成:

(SID:1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0)

我在一些帖子中看到了它.但怎么样?有没有简单的方法来实现这一目标?基本上我希望的字节数组表达NT Authority\NetworkServiceSID = S-1-5-20.在此先感谢您的帮助.

Kon*_*osa 10

您应该使用命名空间中的SecurityIdentifier对象System.Security.Principal:

var sid = new SecurityIdentifier("S-1-5-32-544");
byte[] bytes = new byte[sid.BinaryLength];
sid.GetBinaryForm(bytes, 0);
Run Code Online (Sandbox Code Playgroud)

如果你想把它作为文本,你可以:

string strsid = string.Format("(SID: {0})", string.Join(",", bytes ));
Run Code Online (Sandbox Code Playgroud)

它完全产生:

(SID:1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0)

此外,如果您想要SID NT Authority\NetworkService,您可以将第一行替换为:

var sid = new SecurityIdentifier(WellKnownSidType.NetworkServiceSid, null);
Run Code Online (Sandbox Code Playgroud)