Пример #1
0
        public static bool MySetPrivilege(string sPrivilege, bool enablePrivilege)
        {
            Trust.TOKEN_PRIVILEGES newState = new Trust.TOKEN_PRIVILEGES();

            Trust.TOKEN_PRIVILEGES previousState = new Trust.TOKEN_PRIVILEGES();
            Trust.LUID             luid          = new Trust.LUID();
            int    returnLength = 0;
            IntPtr zero         = IntPtr.Zero;

            if (!Trust.OpenProcessToken(Trust.GetCurrentProcess(), Trust.TokenAccessRights.AllAccess, ref zero) || !Trust.LookupPrivilegeValue((string)null, sPrivilege, ref luid))
            {
                return(false);
            }
            newState.PrivilegeCount           = 1;
            newState.Privileges               = new Trust.LUID_AND_ATTRIBUTES[64];
            newState.Privileges[0].Luid       = luid;
            newState.Privileges[0].Attributes = !enablePrivilege ? 0 : 2;
            previousState.PrivilegeCount      = 64;
            previousState.Privileges          = new Trust.LUID_AND_ATTRIBUTES[64];
            if (Trust.AdjustTokenPrivileges(zero, false, ref newState, 16, ref previousState, ref returnLength))
            {
                return(true);
            }
            Trust.GetLastError();
            return(false);
        }
Пример #2
0
 internal static extern bool LookupPrivilegeValue(
     [In] string systemName,
     [In] string name,
     [In, Out] ref Trust.LUID luid);
Пример #3
0
 internal static extern bool LookupPrivilegeName(
     [In] string systemName,
     [In] ref Trust.LUID luid,
     [In, Out] StringBuilder name,
     [In, Out] ref int nameLength);