我已经打开过Outlook我需要检查它是否以管理员身份打开。我尝试了以下代码,但它会检查VS是否以管理员身份打开。
public bool IsRunningAsLocalAdmin()
{
WindowsIdentity cur = WindowsIdentity.GetCurrent();
foreach (IdentityReference role in cur.Groups)
{
if (role.IsValidTargetType(typeof(SecurityIdentifier)))
{
SecurityIdentifier sid = (SecurityIdentifier)role.Translate(typeof(SecurityIdentifier));
if (sid.IsWellKnown(WellKnownSidType.AccountAdministratorSid) || sid.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid))
{
return true;
}
}
}
return false;
}
我需要检查Outlook是否以管理员身份打开。
答案 0 :(得分:0)
OpenProcess(PROCESS_QUERY_INFORMATION)+ OpenProcessToken(TOKEN_QUERY)获取令牌,然后将该令牌和SID从CreateWellKnownSid(WinBuiltinAdministratorsSid)传递到CheckTokenMembership()
为了能够(几乎)打开PROCESS_QUERY_INFORMATION访问的每个流程,您需要以管理员身份运行debug privileges。
有关详细信息,请参阅Check if another process has admin privileges in .NET。