Exemplo n.º 1
0
        //  プロセストークンに権限を追加
        private static bool AdjustToken()
        {
            if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref _myToken))
            {
                Console.WriteLine("OpenProcess:失敗"); return(false);
            }

            if (!LookupPrivilegeValue(null, SE_RESTORE_NAME, ref _restoreLuid))
            {
                Console.WriteLine("LookupPrivilege:失敗"); return(false);
            }

            if (!LookupPrivilegeValue(null, SE_BACKUP_NAME, ref _backupLuid))
            {
                Console.WriteLine("LookupPrivilege:失敗"); return(false);
            }

            TOKEN_PRIV tokenPriv1 = new TOKEN_PRIV(_restoreLuid);
            TOKEN_PRIV tokenPriv2 = new TOKEN_PRIV(_backupLuid);

            if (!AdjustTokenPrivileges(_myToken, 0, ref tokenPriv1, 1024, 0, 0))
            {
                Console.WriteLine("AdjustToken:失敗"); return(false);
            }

            if (!AdjustTokenPrivileges(_myToken, 0, ref tokenPriv2, 1024, 0, 0))
            {
                Console.WriteLine("AdjustToken:失敗"); return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
 private static extern bool AdjustTokenPrivileges(
     int tokenHandle,
     int disablePrivs,
     [MarshalAs(UnmanagedType.Struct)] ref TOKEN_PRIV newState,
     int buffereLength,
     int previousState,
     int returnlength);