Abstractions.WindowsApi.pInvokes.RegistryLoadSetPrivilege C# (CSharp) Method

RegistryLoadSetPrivilege() static private method

static private RegistryLoadSetPrivilege ( ) : Boolean
return Boolean
        internal static Boolean RegistryLoadSetPrivilege()
        {
            IntPtr _myToken;
            SafeNativeMethods.TokPriv1Luid _tokenPrivileges = new SafeNativeMethods.TokPriv1Luid();
            SafeNativeMethods.TokPriv1Luid _tokenPrivileges2 = new SafeNativeMethods.TokPriv1Luid();
            SafeNativeMethods.LUID _restoreLuid;
            SafeNativeMethods.LUID _backupLuid;

            if (!SafeNativeMethods.OpenProcessToken(SafeNativeMethods.GetCurrentProcess(), SafeNativeMethods.TokenAccessRights.TOKEN_ADJUST_PRIVILEGES | SafeNativeMethods.TokenAccessRights.TOKEN_QUERY, out _myToken))
            {
                LibraryLogging.Error("SetPrivilege() OpenProcess Error: {0}", LastError());
                return false;
            }

            if (!SafeNativeMethods.LookupPrivilegeValue(null, SafeNativeMethods.TokenAccessRights.SE_RESTORE_NAME, out _restoreLuid))
            {
                LibraryLogging.Error("SetPrivilege() LookupPrivilegeValue Error: {0}", LastError());
                return false;
            }

            if (!SafeNativeMethods.LookupPrivilegeValue(null, SafeNativeMethods.TokenAccessRights.SE_BACKUP_NAME, out _backupLuid))
            {
                LibraryLogging.Error("SetPrivilege() LookupPrivilegeValue Error: {0}", LastError());
                return false;
            }

            _tokenPrivileges.Attr = SafeNativeMethods.TokenAccessRights.SE_PRIVILEGE_ENABLED;
            _tokenPrivileges.Luid = _restoreLuid;
            _tokenPrivileges.Count = 1;

            _tokenPrivileges2.Attr = SafeNativeMethods.TokenAccessRights.SE_PRIVILEGE_ENABLED;
            _tokenPrivileges2.Luid = _backupLuid;
            _tokenPrivileges2.Count = 1;

            if (!SafeNativeMethods.AdjustTokenPrivileges(_myToken, false, ref _tokenPrivileges, 0, IntPtr.Zero, IntPtr.Zero))
            {
                LibraryLogging.Error("SetPrivilege() AdjustTokenPrivileges Error: {0}", LastError());
                return false;
            }

            if (!SafeNativeMethods.AdjustTokenPrivileges(_myToken, false, ref _tokenPrivileges2, 0, IntPtr.Zero, IntPtr.Zero))
            {
                LibraryLogging.Error("SetPrivilege() AdjustTokenPrivileges Error: {0}", LastError());
                return false;
            }

            if (!CloseHandle(_myToken))
            {
                LibraryLogging.Warn("Can't close handle _myToken");
            }

            SafeNativeMethods.RegistryLoadPrivilegeSet = true;
            return true;
        }