Terminal: Exécuter en tant qu'administrateur

Créé le 8 juil. 2019  ·  42Commentaires  ·  Source: microsoft/terminal

2019-07-08_14h29_22
2019-07-08_14h29_54

Il semble qu'il y ait un problème lors de l'exécution du terminal "En tant qu'administrateur"

Erreur: Windows ne trouve pas "C: \ Program Files \ WindowsApps \ Microsoft.WindowsTerminal_0.2.1831.0_x64__8wekyb3d8bbwe \ WindowsTerminal.exe" Assurez-vous que vous avez correctement tapé le nom, puis réessayez

Issue-Bug Needs-Tag-Fix Product-Terminal Resolution-External

Commentaire le plus utile

Aussi comme suggestion au lieu d'exécuter le terminal ENTIER en tant qu'administrateur à partir de la barre des tâches, peut-être avoir des alternatives?

Par exemple:

Lors de l'ouverture d'un nouvel onglet, l'utilisateur ou une interface utilisateur lui demande-t-il s'il souhaite ouvrir la nouvelle instance en tant qu'administrateur?
suggesstion

Ou faites simplement un clic droit sur le terminal pour ouvrir un onglet d'administration à partir du même répertoire. (Ce serait très utile pour powershell-core car il n'a pas de fonctionnalités intéressantes comme sudo)

Tous les 42 commentaires

@ DHowett-MSFT J'aurais pu jurer que nous avions un problème de doublon quelque part pour ça, mais je ne peux pas le trouver maintenant. Vous rappelez-vous ce qui cause cela?

Ahh mec, désolé si c'est un double.

il n'y a aucune raison, démarrez bien l'application mais r-cliquez et démarrez en cas d'échec de l'administrateur, Windows UAC demande le mot de passe administrateur deux fois puis vous obtenez l'erreur.

Je rencontre également actuellement ce problème. J'ai recherché le terminal dans la barre des tâches
win-terminal-run-as-admin-issue-1

Ensuite, j'ai été invité à entrer deux fois mes informations d'identification d'administrateur! Une invite d'administration après l'autre. Puis, lorsque j'ai fini de saisir mes informations d'identification la deuxième fois, ce message d'erreur est apparu:

win-terminal-run-as-admin-issue

Je viens d'installer le terminal aujourd'hui.

Version du terminal:
La dernière version: 0.2.1831.0

Version du système d'exploitation:
Windows 10 Professionnel
10.0.18362 Construire 18362

Aussi comme suggestion au lieu d'exécuter le terminal ENTIER en tant qu'administrateur à partir de la barre des tâches, peut-être avoir des alternatives?

Par exemple:

Lors de l'ouverture d'un nouvel onglet, l'utilisateur ou une interface utilisateur lui demande-t-il s'il souhaite ouvrir la nouvelle instance en tant qu'administrateur?
suggesstion

Ou faites simplement un clic droit sur le terminal pour ouvrir un onglet d'administration à partir du même répertoire. (Ce serait très utile pour powershell-core car il n'a pas de fonctionnalités intéressantes comme sudo)

La prise en charge de Windows Terminal en mode administrateur peut ne pas être un bon comportement, ce qui signifie que tous les shells dans d'autres onglets ouverts à partir de Ctrl + T peuvent être des privilèges d'administrateur. Autant que je sache, Windows Terminal n'implémente aucun code de l'administrateur à l'utilisateur restreint. En fait, ce qui manque à Windows, c'est le type d'implémentation de privilèges qui ne nécessite pas d'interaction avec l'interface utilisateur, comme sudo.

Mais la mise en œuvre de sudo peut également être fastidieuse. Le flux du verbe runas est à peu près le suivant (si quelque chose ne va pas, veuillez me le rappeler):

  1. AppInfo va et parle à l'autorité de sécurité locale pour obtenir le jeton élevé de l'utilisateur connecté de la session 1.
  2. AppInfo charge une structure STARTUPINFOEX (nouvelle pour Vista) et appelle la toute nouvelle API Vista InitializeProcThreadAttributeList () avec de la place pour un attribut.
  3. OpenProcess () est appelé pour obtenir un handle vers le processus qui a lancé l'appel RPC.
  4. UpdateProcThreadAttribute () est appelé avec PROC_THREAD_ATTRIBUTE_PARENT_PROCESS , et utilise le handle récupéré à l'étape 3.
  5. CreateProcessAsUser () est appelé avec EXTENDED_STARTUPINFO_PRESENT et les résultats des étapes 1 et 4.
  6. DeleteProcThreadAttributeList () est appelé.
  7. Les résultats sont rassemblés et les poignées sont nettoyées.

Nous pouvons tirer une conclusion simple. En fait, runas est en fait un processus normal qui lance une requête RPC à un processus à privilèges élevés. Le processus à privilèges élevés (service AppInfo) crée un processus administrateur et définit son processus parent comme un processus normal.

AppInfo ne prend actuellement pas en charge la configuration d'un répertoire de travail, d'une entrée et d'une sortie (bien qu'en appelant CreateProcessAsUser) lors du lancement du processus administrateur. Il s'agit d'un problème qui doit être résolu pour permettre à la prise en charge sudo de s'exécuter dans Windows Terminal. (ShellExecuteEx SEE_MASK_NO_CONSOLE ne fonctionne pas)

SHELLEXECUTEINFOW :

typedef struct _SHELLEXECUTEINFOW {
  DWORD     cbSize;
  ULONG     fMask;
  HWND      hwnd;
  LPCWSTR   lpVerb;
  LPCWSTR   lpFile;
  LPCWSTR   lpParameters;
  LPCWSTR   lpDirectory;
  int       nShow;
  HINSTANCE hInstApp;
  void      *lpIDList;
  LPCWSTR   lpClass;
  HKEY      hkeyClass;
  DWORD     dwHotKey;
  union {
    HANDLE hIcon;
    HANDLE hMonitor;
  } DUMMYUNIONNAME;
  HANDLE    hProcess;
} SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;

Voir: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-updateprocthreadattribute

| Valeur | Signification |
| --- | --- |
| PROC_THREAD_ATTRIBUTE_PARENT_PROCESS | Le paramètre lpValue est un pointeur vers un descripteur vers un processus à utiliser à la place du processus appelant en tant que parent du processus en cours de création. Le processus à utiliser doit disposer du droit d'accès PROCESS_CREATE_PROCESS.

Les attributs hérités du processus spécifié incluent les poignées, le mappage de périphériques, l'affinité du processeur, la priorité, les quotas, le jeton de processus et l'objet de travail. (Notez que certains attributs tels que le port de débogage proviendront du processus de création, pas du processus spécifié par ce handle.)

C'est certainement un problème de plate-forme Windows. Je me l'attribue pour faire un suivi avec l'équipe qui le possède et clôturer cela. Merci.

J'aime la proposition de @ YMba9g8j9CJp0wLoQf5y d'autoriser un onglet avec un privilège accru. Je viens de ConEmu où nous pouvons créer un onglet avec ou sans privilège d'administrateur. Lors de la création d'un onglet d'administration, je serai invité avec UAC (pour de bon).

N'est-ce pas seulement le comportement normal des applications Windows Store? Cela ressemble à l'application Preview récemment publiée.
Mais j'ai besoin d'un moyen d'exécuter des obus surélevés. Cela ne semble pas possible aujourd'hui (ouvrez les onglets en tant qu'administrateur).

Hé, nous ne sommes pas sûrs que nous puissions faire quoi que ce soit à ce sujet. Pourriez-vous déposer vos commentaires dans la catégorie "Plateforme développeur> Déploiement d'applications"? Cela aidera à le diriger vers la bonne équipe et collectera des informations de diagnostic très utiles.

Lien: c'est aussi # 1538

Même si je suis d'accord avec la décision. Cela rend assez pénible d'utiliser chocolatey sans l'exécuter explicitement en mode administrateur. (

@musm J'ai juste ceci dans ma configuration PowerShell 6:

function GoAdmin { start-process pwsh –verb runAs }

(remplacez pwsh par powershell si vous utilisez l'ancien PowerShell)

Donc, chaque fois que j'ai besoin d'installer / mettre à jour des packages via chocolatey, je tape GoAdmin (dans PowerShell hébergé par Windows Terminal), ce qui m'amène à une fenêtre PowerShell d'administration distincte. Là, je peux exécuter toutes les commandes d'administration chocolatées. Ensuite, je ferme simplement la fenêtre d'administration et tapez refreshenv dans ma session Windows Terminal pour mettre à jour toutes les variables PATH. C'est assez simple.

Je voudrais certainement un moyen de lancer wt (Windows Terminal) au lieu d'aller directement à un pwsh "nu", mais cela ne semble pas possible. Mais c'est un petit reproche. Meh. :-)

Je reçois toujours une erreur lorsque je veux démarrer WT (0.9.433.0) en tant qu'administrateur:

image

Se produit sur plusieurs machines, avec les derniers WT et Windows (v10.0.18363.657).
Je ne comprends pas très bien pourquoi ce problème est clos et quelle est la solution de contournement.

En fait, cela n'a jamais fonctionné, le dernier commentaire que j'ai eu était, c'est un problème de Windows et ils le soulèveront avec l'équipe.

ils le soulèveront avec l'équipe.

Je ne pense pas. C'est plutôt « vous devriez le soulever avec l'équipe».

Je suis sûr qu'ils ne pensent pas à publier Win Terminal v1 avec l'une des fonctionnalités les plus importantes cassées.
Dommage car cela rend les versions actuelles de pré-version de WT inutilisables.

Cela fera apparaître une nouvelle fenêtre PowerShell avec l'administrateur. Pas exactement ce que nous voulons, mais c'est un travail autour. Créez un nouveau profil avec la ligne de commande suivante.

"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",

Pourquoi est-ce fermé? Il doit encore y avoir une fonction d'élévation de l'onglet.

Ceci est suivi dans un tas d'autres problèmes sur ce référentiel, c'est pourquoi.

@ DHowett-MSFT Merci. Quelle question devons-nous suivre? Je ne pense pas que ce soit mentionné ci-dessus.

@musm J'ai juste ceci dans ma configuration PowerShell 6:

function GoAdmin { start-process pwsh –verb runAs }

(remplacez pwsh par powershell si vous utilisez l'ancien PowerShell)

Donc, chaque fois que j'ai besoin d'installer / mettre à jour des packages via chocolatey, je tape GoAdmin (dans PowerShell hébergé par Windows Terminal), ce qui m'amène à une fenêtre PowerShell d'administration distincte. Là, je peux exécuter toutes les commandes d'administration chocolatées. Ensuite, je ferme simplement la fenêtre d'administration et tapez refreshenv dans ma session Windows Terminal pour mettre à jour toutes les variables PATH. C'est assez simple.

Je voudrais certainement un moyen de lancer wt (Windows Terminal) au lieu d'aller directement à un pwsh "nu", mais cela ne semble pas possible. Mais c'est un petit reproche. Meh. :-)

Dans Windows, où se trouve ce fichier de configuration?

J'ai trouvé une solution de contournement. Vous pouvez utiliser chocolatey pour installer un package appelé sudo (choco install -y sudo). Ensuite, vous pouvez utiliser sudo comme prévu.

Il semble que je puisse actuellement ouvrir le terminal en tant qu'administrateur; au moins ça marche sur ma machine. Ce serait encore mieux si nous pouvions créer un onglet en tant qu'administrateur comme ConEmu (qui est discuté dans # 632), mais il n'y a actuellement aucun intérêt à rouvrir ce problème.

Autres demandes de fonctionnalités en attente associées:

  • # 146 sudo qui pourrait intéresser @ Pens99
  • # 576 jumplist de la barre des tâches; Je considère cela comme une substitution de # 632 en raison de l'implication de la sécurité (que je comprends parfaitement venant de l'industrie de la sécurité), en particulier lorsqu'il est combiné avec # 3246.

J'espère que cela aidera tout le monde à suivre ce fil.

@ DHowett-MSFT Quel problème devrions-nous suivre et commencer pour résoudre ce problème? Le seul autre problème référencé que je peux voir est le # 1538 qui est également fermé.

Je suis sûr que la position de Microsoft ne peut pas être que tout le monde devrait avoir des droits administratifs sur son utilisateur standard au lieu d'utiliser un compte administrateur distinct s'il souhaite utiliser des applications Windows modernes. Ceci est après tout contraire aux pratiques de sécurité standard.

@danstur Le mieux que je puisse offrir pour ce problème est le # 4217. Nous recherchons un correctif avec l'équipe propriétaire du déploiement de l'application. Le problème est que les applications sont _installées_ globalement, mais uniquement enregistrées par utilisateur. Il s'agissait d'une infrastructure conçue pour Windows 8 qui n'a évolué que très lentement pour prendre en charge même l'exécution d'applications Win32 standard telles que Terminal. # 1386 nous permet de sortir du package et de le distribuer comme quelque chose de plus traditionnel pour les entreprises clientes et les personnes qui rencontrent des problèmes avec le moteur de déploiement de packages.

@ DHowett-MSFT Merci pour les problèmes, heureux d'apprendre qu'ils sont suivis.

Pour clarifier: si j'installe l'application via les options mentionnées dans # 1386, pourrais-je alors l'exécuter en tant qu'utilisateur différent ou est-ce que cela ne fonctionnera toujours pas? Cela ne me dérangerait pas d'avoir à enregistrer l'application (cela signifie-t-il exécuter Add-AppxPackage ?) Avec les autres utilisateurs.

@ DHowett-MSFT Dustin Howett FTE Merci pour les problèmes, heureux d'apprendre qu'ils sont suivis.

Pour clarifier: si j'installe l'application via les options mentionnées dans # 1386, pourrais-je alors l'exécuter en tant qu'utilisateur différent ou est-ce que cela ne fonctionnera toujours pas? Cela ne me dérangerait pas d'avoir à enregistrer l'application (cela signifie-t-il exécuter Add-AppxPackage ?) Avec les autres utilisateurs.

Cela devrait bien fonctionner. Vous devrez ajouter-AppxPackage en tant que ces utilisateurs, oui. :sourire:

Heureux de voir son clouage.

Ce problème doit être résolu, car maintenant dans tout environnement Windows configuré avec des comptes administrateur et utilisateur séparés (comme il se doit), le terminal n'est pas utilisable pour les administrateurs s'il est installé à partir du MS Store (recommandé)

Heureux de voir son clouage.

Ce problème doit être résolu, car maintenant dans tout environnement Windows configuré avec des comptes administrateur et utilisateur séparés (comme il se doit), le terminal n'est pas utilisable pour les administrateurs s'il est installé à partir du MS Store (recommandé)

Une solution de contournement qui a fonctionné pour moi était de se connecter en tant qu'utilisateur administrateur sur la machine locale et de «réinstaller» le terminal à partir du magasin. Ensuite, une fois connecté en tant qu'utilisateur standard, je pourrais exécuter le terminal en tant qu'administrateur

Oui, le problème semble être que Store enregistre l'application uniquement pour l'utilisateur actuel. C'est bien pour la plupart des applications (en fait c'est comme ça que la plupart des applications devraient être installées de toute façon) mais ce n'est pas bon pour les applications administratives comme les terminaux.

Hey future me: le problème d'enregistrement du magasin est suivi en interne avec MSFT: 20356613 et discuté en détail dans # 4217

Bonjour,
J'ai également rencontré ce problème sur mon compte régulier. La solution consiste à réinstaller l'application Terminal tout en étant connecté à un compte administrateur. Ensuite, vous pourrez exécuter en tant qu'administrateur sur votre compte régulier.

Pareil ici. le problème semble ne pas être résolu

J'ai encore une autre solution de contournement moins que parfaite qui ne permet pas d'ouvrir un _tab_ en tant qu'administrateur, mais cela permet d'ouvrir une fenêtre PowerShell en tant qu'administrateur à partir d'un onglet existant (non-admin):

https://github.com/jt-github/elevate

Cela fonctionne de la même manière que l'ajout du profil comme suggéré par @CraigHead ci-dessus:
"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",

Sauf que ma version est exécutée en exécutant la commande elevate .

@ jt-github C'est comme sudo.

Voir ici: https://github.com/pldmgg/Sudo

Exactement, seul sudo est bien plus cool que le mien mais le mien est tellement simple qu'il est facile à comprendre et à utiliser.

Comme beaucoup d'entre vous, j'ai également rencontré ce problème, j'ai donc créé les fonctions suivantes afin d'ouvrir un shell d'administration à partir de powershell.exe, pwsh.exe ou terminal Microsoft


# Function        Test-IsAdmin
function Test-IsAdmin {
    <#
    .Synopsis
    Tests if the user is an administrator
    .Description
    Returns true if a user is an administrator, false if the user is not an administrator
    .Example
    Test-IsAdmin
    #>
    $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
    $principal = New-Object Security.Principal.WindowsPrincipal $identity
    $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}


# Function        New-AdminShell
function New-AdminShell {
    <#
    .Synopsis
    Starts an Elevated PowerShell Console.

    .Description
    Opens a new PowerShell Console Elevated as Administrator. If the user is already running an elevated
    administrator shell, a message is displayed in the console session.

    .Example
    New-AdminShell

    #>

    $Process = Get-Process | Where-Object { $_.Id -eq "$($PID)" }
    if (Test-IsAdmin = $True) {
        Write-Warning -Message "Admin Shell already running!"
    }
    else {
        if ($Process.Name -eq "powershell") {
            Start-Process -FilePath "powershell.exe" -Verb runas -PassThru
        }
        if ($Process.Name -eq "pwsh") {
            Start-Process -FilePath "pwsh.exe" -Verb runas -PassThru
        }
    }
}

# Function        New-AdminTerminal
function New-AdminTerminal {
    <#
    .Synopsis
    Starts an Elevated Microsoft Terminal.

    .Description
    Opens a new Microsoft Terminal Elevated as Administrator. If the user is already running an elevated
    Microsoft Terminal, a message is displayed in the console session.

    .Example
    New-AdminShell

    #>

    if (Test-IsAdmin = $True) {
        Write-Warning -Message "Admin Shell already running!"
    }
    else {
        Start-Process "wt.exe" -ArgumentList "-p pwsh" -Verb runas -PassThru
    }
}

J'espère que quelqu'un les trouvera utiles. Je les ai ajoutés à mes profils PowerShell afin qu'ils soient toujours disponibles.

Bonjour,
J'ai également rencontré ce problème sur mon compte régulier. La solution consiste à réinstaller l'application Terminal tout en étant connecté à un compte administrateur. Ensuite, vous pourrez exécuter en tant qu'administrateur sur votre compte régulier.

Cela a fonctionné pour moi aussi, c'est super ennuyeux mais sur un réseau d'entreprise c'est à peu près la seule façon qui a fonctionné pour moi. Si vous n'avez pas d'administrateur local, cette application est à peu près un buste pour les particuliers élevés sur un réseau d'entreprise.

Heureux de voir son clouage.
Ce problème doit être résolu, car maintenant dans tout environnement Windows configuré avec des comptes administrateur et utilisateur séparés (comme il se doit), le terminal n'est pas utilisable pour les administrateurs s'il est installé à partir du MS Store (recommandé)

Une solution de contournement qui a fonctionné pour moi était de se connecter en tant qu'utilisateur administrateur sur la machine locale et de «réinstaller» le terminal à partir du magasin. Ensuite, une fois connecté en tant qu'utilisateur standard, je pourrais exécuter le terminal en tant qu'administrateur

Non, cela n'a pas fonctionné pour moi :(

Alors je l'ai compris.

Vous devez l'avoir installé à la fois dans le compte administrateur et dans le compte principal, mais le compte administratif doit également être connecté pour que cela fonctionne. Par cela, je veux dire que l'ordinateur doit être connecté à l'administrateur, puis changer d'utilisateur (ne pas se déconnecter) et se connecter à l'autre compte. Cela permettra à l'application de s'exécuter en mode administrateur.

J'imagine que les applications de magasin installées sur les deux comptes ne peuvent pas être exécutées en tant qu'administrateur à moins qu'un compte administrateur ne soit connecté.

Alors je l'ai compris.

Vous devez l'avoir installé à la fois dans le compte administrateur et dans le compte principal, mais le compte administratif doit également être connecté pour que cela fonctionne. Par cela, je veux dire que l'ordinateur doit être connecté à l'administrateur, puis changer d'utilisateur (ne pas se déconnecter) et se connecter à l'autre compte. Cela permettra à l'application de s'exécuter en mode administrateur.

J'imagine que les applications de magasin installées sur les deux comptes ne peuvent pas être exécutées en tant qu'administrateur à moins qu'un compte administrateur ne soit connecté.

Cela fonctionne pour moi. 👍

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

alabuzhev picture alabuzhev  ·  3Commentaires

mrmlnc picture mrmlnc  ·  3Commentaires

mrmlnc picture mrmlnc  ·  3Commentaires

zadjii-msft picture zadjii-msft  ·  3Commentaires

dev-logan picture dev-logan  ·  3Commentaires