是否有一种快速的方法(不将所有著名的sid复制到代码中)来确定sid字符串是否是众所周知的字符串?
bool IsWellKnownSid(string sid)发布于 2020-07-08 01:27:06
您可以使用WellKnownSidType枚举,就像奥斯丁提到的那样,但是仍然需要循环每个值来检查它是否匹配。
下面是一种可以这样做的方法:
private static WellKnownSidType[] _wellKnownSids = (WellKnownSidType[])Enum.GetValues(typeof(WellKnownSidType));
public bool IsWellKnownSid(SecurityIdentifier sid) {
foreach (var wellKnown in _wellKnownSids) {
if (sid.IsWellKnown(wellKnown)) return true;
}
return false;
}_wellKnownSids字段的作用是防止每次调用方法时调用Enum.GetValues,而这些值总是相同的。
如果您愿意,可以将其转换为扩展方法:
public static bool IsWellKnownSid(this SecurityIdentifier sid)发布于 2020-07-07 16:20:35
看来您可以使用Microsot的ENUM:
一种快速而肮脏的方法似乎在基本级别上起作用,而不需要进行大量的实际测试:
var account = System.Security.Principal.WellKnownSidType.AccountCertAdminsSid;
var reference = new System.Security.Principal.SecurityIdentifier("S-1-0-0");
Console.WriteLine(reference.IsWellKnown(account));https://stackoverflow.com/questions/62779628
复制相似问题