我已被分配到修改WinForms應用程序以基本檢查登錄的用戶是否屬於特定的域。 這是我想出迄今:是否有更好(更簡單)的方法來獲取特定域名的SID?
byte[] domainSid;
var directoryContext =
new DirectoryContext(DirectoryContextType.Domain, "domain.se");
using (var domain = Domain.GetDomain(directoryContext))
using (var directoryEntry = domain.GetDirectoryEntry())
domainSid = (byte[])directoryEntry.Properties["objectSid"].Value;
var sid = new SecurityIdentifier(domainSid, 0);
bool validUser = UserPrincipal.Current.Sid.IsEqualDomainSid(sid);
有沒有更好/更簡單的方法來做到這一點? 對我來說,似乎可以使用PrincipalContext或System.Security.Principal中的其他類以某種方式訪問domainSid。
我已經考慮過使用硬編碼的SID字符串,但我不知道如何「正確」,這將是。
請注意,在Windows的本地化版本中,管理員的名稱可能不同。 例如,在俄語Windows中,沒有「管理員」用戶,而是「Администратор」,因此硬編碼管理員的名字不是一個好主意。 – user2513541