49 votes

Est-il possible d'exécuter l'explorateur de fichiers en tant qu'administrateur sous Windows 10 ?

Après l'installation de Windows 10, il semble que j'ai perdu la possibilité d'exécuter explorer.exe en tant qu'administrateur avec un utilisateur du groupe administrateur.

La raison pour laquelle je veux faire cela est que, dans l'environnement de développement de notre équipe, nous utilisons un exe C# pour effectuer une configuration de l'environnement qui démarre l'invite de commande en mode administrateur et sous un lecteur. En conséquence, ces lecteurs substitués ne sont pas visibles dans l'explorateur de fichiers car il n'est pas exécuté en tant qu'administrateur. C'est un peu gênant et on peut parfois faire des erreurs.

J'ai pu lancer explorer.exe depuis le gestionnaire de tâches avec l'option "créer avec des privilèges" cochée et j'ai pu voir tous les lecteurs dans l'explorateur. Mais maintenant, cela ne fonctionne plus.

Je savais qu'il y avait d'autres options pour contourner ce flux de travail, mais je veux juste m'assurer que si c'est maintenant totalement impossible sous Windows 10 ?

Tout commentaire est le bienvenu.

42voto

Howard Tucker Points 133

Pour les petites choses comme la navigation dans un dossier qui ne peut pas être parcouru sans l'explorateur surélevé, je lance l'explorateur surélevé. notepad puis, dans la boîte de dialogue d'ouverture de fichier, je peux parcourir tous les répertoires. Avec le clic droit, je peux faire pas mal de choses. (Il s'agit d'une solution rapide qui fait généralement l'affaire).

19voto

magicandre1981 Points 94338

J'ai découvert un moyen d'exécuter Explorer en tant qu'administrateur il y a quelque temps :

  • Lancez regedit.exe et allez à la clé suivante. Vous devriez pouvoir copier/coller cette chaîne dans la barre d'adresse de regedit :

    HKEY_CLASSES_ROOT \AppID\ {CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}

  • faire un clic droit sur Permissions et définissez votre utilisateur comme propriétaire (cliquez sur advanced pour pouvoir prendre possession de la clé et donner à l'utilisateur actuel des droits d'écriture.

enter image description here

enter image description here

ou utiliser l'outil tiers RegOwnershipEx pour obtenir le contrôle total de la clé :

  • Suivant, supprimer o renommer la valeur Exécution .

Aujourd'hui, le Elevated-Unelevated Explorer Factory (ce qui fait que le Run As admin est ignorée) est désactivée et vous pouvez démarrer l'explorateur avec des droits d'administrateur.

enter image description here

Note : Pour démarrer Explorer en tant qu'administrateur après avoir fait cela, ne faites pas ceci : Gestionnaire des tâches > Exécuter > explorer.exe en cochant la case "En tant qu'administrateur". il ne fonctionnera pas. Créez plutôt un raccourci de l'explorateur sur le bureau, cliquez dessus avec le bouton droit et sélectionnez "Exécuter en tant qu'administrateur" ou modifiez le raccourci > Avancé > Exécuter en tant qu'administrateur.

4voto

jung Points 47

Démarrer la ligne de commande en tant qu'administrateur.

Tapez ces commandes :

taskkill /im explorer.exe
explorer.exe

0voto

lauxjpn Points 129

Appliquer la solution acceptée de @magicandre1981 avec un copier et coller le script PowerShell script. Il suffit d'exécuter ce qui suit à partir d'un élevé Invite PowerShell :

Function Enable-Privilege 
{
 param([ValidateSet("SeAssignPrimaryTokenPrivilege", "SeAuditPrivilege", "SeBackupPrivilege",
   "SeChangeNotifyPrivilege", "SeCreateGlobalPrivilege", "SeCreatePagefilePrivilege",
   "SeCreatePermanentPrivilege", "SeCreateSymbolicLinkPrivilege", "SeCreateTokenPrivilege",
   "SeDebugPrivilege", "SeEnableDelegationPrivilege", "SeImpersonatePrivilege", "SeIncreaseBasePriorityPrivilege",
   "SeIncreaseQuotaPrivilege", "SeIncreaseWorkingSetPrivilege", "SeLoadDriverPrivilege",
   "SeLockMemoryPrivilege", "SeMachineAccountPrivilege", "SeManageVolumePrivilege",
   "SeProfileSingleProcessPrivilege", "SeRelabelPrivilege", "SeRemoteShutdownPrivilege",
   "SeRestorePrivilege", "SeSecurityPrivilege", "SeShutdownPrivilege", "SeSyncAgentPrivilege",
   "SeSystemEnvironmentPrivilege", "SeSystemProfilePrivilege", "SeSystemtimePrivilege",
   "SeTakeOwnershipPrivilege", "SeTcbPrivilege", "SeTimeZonePrivilege", "SeTrustedCredManAccessPrivilege",
   "SeUndockPrivilege", "SeUnsolicitedInputPrivilege")]$Privilege,
  $ProcessId = $pid,
  [Switch]$Disable)

   $Definition = @'
 using System;
 using System.Runtime.InteropServices;

 public class AdjPriv
 {
  [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
  internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
   ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);

  [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
  internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
  [DllImport("advapi32.dll", SetLastError = true)]
  internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  internal struct TokPriv1Luid
  {
   public int Count;
   public long Luid;
   public int Attr;
  }

  internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
  internal const int SE_PRIVILEGE_DISABLED = 0x00000000;
  internal const int TOKEN_QUERY = 0x00000008;
  internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
  public static bool EnablePrivilege(long processHandle, string privilege, bool disable)
  {
   bool retVal;
   TokPriv1Luid tp;
   IntPtr hproc = new IntPtr(processHandle);
   IntPtr htok = IntPtr.Zero;
   retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
   tp.Count = 1;
   tp.Luid = 0;
   if(disable)
   {
    tp.Attr = SE_PRIVILEGE_DISABLED;
   }
   else
   {
    tp.Attr = SE_PRIVILEGE_ENABLED;
   }
   retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid);
   retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
   return retVal;
  }
 }
'@

 $processHandle = (Get-Process -id $ProcessId).Handle
 $type = Add-Type $definition -PassThru
 $type[0]::EnablePrivilege($processHandle, $Privilege, $Disable)
}

$path = 'HKLM:\Software\Classes\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}'

$acl = Get-Acl $path
$originalOwner = $acl.GetOwner([System.Security.Principal.NTAccount]).Value
$acl.SetOwner((New-Object System.Security.Principal.NTAccount([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)))
$acl | Set-Acl $path

Rename-ItemProperty -LiteralPath $path -Name "RunAs" -NewName "__RunAs";

$acl = Get-Acl $path
$acl.SetOwner((New-Object System.Security.Principal.NTAccount($originalOwner)))
Enable-Privilege SeRestorePrivilege
$acl | Set-Acl $path

Il renomme le RunAs au nom de la valeur __RunAs .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X