private bool CheckPrivilege(string exectedPrivilege, SafeHandle currentUserToken) { AdvApi32PInvoke.LUID luid = default(AdvApi32PInvoke.LUID); expect(() => get_privilege_identifier(exectedPrivilege, out luid)); AdvApi32PInvoke.PRIVILEGE_SET privilegeSet = new AdvApi32PInvoke.PRIVILEGE_SET(); privilegeSet.PrivilegeCount = 1; privilegeSet.Control = AdvApi32PInvoke.PRIVILEGE_SET.PRIVILEGE_SET_ALL_NECESSARY; privilegeSet.Privilege = new AdvApi32PInvoke.LUID_AND_ATTRIBUTES[1]; privilegeSet.Privilege[0].Luid = luid; privilegeSet.Privilege[0].Attributes = AdvApi32PInvoke.LUID_AND_ATTRIBUTES.SE_PRIVILEGE_REMOVED; bool privilegeCheckResult; bool executionResult = AdvApi32PInvoke.PrivilegeCheck(currentUserToken.DangerousGetHandle(), ref privilegeSet, out privilegeCheckResult); expect(() => executionResult); return(privilegeCheckResult); }
private bool get_privilege_identifier(string expectedPrivilege, out AdvApi32PInvoke.LUID luid) { string systemName = null; return(AdvApi32PInvoke.LookupPrivilegeValue(systemName, expectedPrivilege, out luid)); }