我在此网站上找到了一个链接,其中显示了如何将SID转换为二进制类型。有人可以告诉我如何反向 - 将二进制类型转换回SID。
这是从SID转到二进制文件的脚本:
PS> $sid = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-105005785-2143699225-541720777-501")
PS> $c = New-Object 'byte[]' $sid.BinaryLength
PS> $sid.GetBinaryForm($c, 0)
谢谢!
答案 0 :(得分:3)
要从字节数组转到SID,请尝试:
(New-Object System.Security.Principal.SecurityIdentifier($c, 0)).toString()
答案 1 :(得分:0)
如果要在C#中执行相同的操作,则可以执行以下操作(来自https://stackoverflow.com/a/59258680/12508260):
在我的情况下,byte []来自ManagementEventWatcher:
ManagementBaseObject ne = e.NewEvent;
var securityIdentifier = System.Security.Principal.SecurityIdentifier((byte[])ne.Properties["SID"].Value, 0);
您可以只使用securityIdentifier.ToString()来获取SID作为字符串。