Build-in Administrator在代码中应该如何判断?
写测试代码碰到了一个很郁闷的问题.
如果判断当前账户是Build-in Administrator 呢?
C#一直是以IsInRole()的逻辑去判断,也就是这个账户是否隶属于某一个组,这种逻辑在XP下面没问题,但是如果碰到了Vista,
因为UAC的原因,即使在Build in administrator组,也不能算是真正的Administrator,
写一个我目前想到的方法,感觉上BuildIn Administrator 账户SID最后一个标识位的值是500,所以就这样判断了:
public static bool IsBuildInAdministrator ()
{
bool bResult = false;
WindowsIdentity wid = WindowsIdentity.GetCurrent();
string[] sids = wid.User.Value.Split("-".ToCharArray());
if (sids[sids.Length - 1] == "500")
{
bResult = true;
}
return bResult;
}
我知道这样Hardcode肯定会产生Bug,但是目前没有好办法了,各位怎么看?