Terminal: Als Administrator ausführen

Erstellt am 8. Juli 2019  ·  42Kommentare  ·  Quelle: microsoft/terminal

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

Anscheinend liegt ein Problem beim Ausführen des Terminals "Als Administrator" vor.

Fehler: Windows kann "C: \ Programme \ WindowsApps \ Microsoft.WindowsTerminal_0.2.1831.0_x64__8wekyb3d8bbwe \ WindowsTerminal.exe" nicht finden. Stellen Sie sicher, dass Sie den Namen richtig eingegeben haben, und versuchen Sie es erneut

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

Hilfreichster Kommentar

Auch als Vorschlag, anstatt das GANZE Terminal als Administrator über die Taskleiste auszuführen, haben Sie vielleicht Alternativen?

Zum Beispiel:

Wenn Sie eine neue Registerkarte öffnen, fragen Sie den Benutzer oder eine Benutzeroberfläche, ob er die neue Instanz als Administrator öffnen möchte.
suggesstion

Oder klicken Sie einfach mit der rechten Maustaste auf das Terminal, um eine Administratorregisterkarte aus genau demselben Verzeichnis zu öffnen. (Das wäre sehr nützlich für Powershell-Core, da es keine nette Funktionalität wie sudo hat.)

Alle 42 Kommentare

@ DHowett-MSFT Ich hätte schwören können, dass wir irgendwo ein doppeltes Problem hatten, aber ich kann es jetzt nicht finden. Erinnerst du dich, was das verursacht?

Ahh Mann, tut mir leid, wenn es ein Duplikat ist.

Es gibt keinen Grund, starten Sie die App in Ordnung, aber klicken Sie erneut und starten Sie, wenn der Administrator fehlschlägt. Die Windows-Benutzerkontensteuerung fordert zweimal zur Eingabe des Administratorkennworts auf. Dann wird der Fehler angezeigt.

Ich habe derzeit auch dieses Problem. Ich habe in der Taskleiste nach einem Terminal gesucht
win-terminal-run-as-admin-issue-1

Dann wurde ich aufgefordert, meine Administratoranmeldeinformationen zweimal einzugeben! Eine Admin-Eingabeaufforderung nach der anderen. Als ich das zweite Mal meine Anmeldeinformationen eingegeben hatte, tauchte diese Fehlermeldung auf:

win-terminal-run-as-admin-issue

Ich habe heute gerade das Terminal installiert.

Terminalversion:
Version: 0.2.1831.0

OS Version:
Windows 10 Pro
10.0.18362 Build 18362

Auch als Vorschlag, anstatt das GANZE Terminal als Administrator über die Taskleiste auszuführen, haben Sie vielleicht Alternativen?

Zum Beispiel:

Wenn Sie eine neue Registerkarte öffnen, fragen Sie den Benutzer oder eine Benutzeroberfläche, ob er die neue Instanz als Administrator öffnen möchte.
suggesstion

Oder klicken Sie einfach mit der rechten Maustaste auf das Terminal, um eine Administratorregisterkarte aus genau demselben Verzeichnis zu öffnen. (Das wäre sehr nützlich für Powershell-Core, da es keine nette Funktionalität wie sudo hat.)

Die Unterstützung von Windows-Terminals im Administratormodus ist möglicherweise kein gutes Verhalten. Dies bedeutet, dass alle Shells in anderen Registerkarten, die mit Strg + T geöffnet wurden, möglicherweise Administratorrechte besitzen. Soweit ich weiß, implementiert Windows Terminal keinen Code vom Administrator für den eingeschränkten Benutzer. Was Windows tatsächlich fehlt, ist die Art der Implementierung von Berechtigungen, für die keine Interaktion mit der Benutzeroberfläche erforderlich ist, wie z. B. sudo.

Die Implementierung von sudo kann aber auch umständlich sein. Der Fluss des Runas- Verbs ist ungefähr wie folgt (wenn etwas nicht stimmt, erinnern Sie mich bitte daran):

  1. AppInfo geht und spricht mit der lokalen Sicherheitsbehörde, um das erhöhte Token des angemeldeten Benutzers von Sitzung 1 zu erhalten.
  2. AppInfo lädt eine STARTUPINFOEX-Struktur (neu in Vista) und ruft die brandneue Vista-API InitializeProcThreadAttributeList () mit Platz für ein Attribut auf.
  3. OpenProcess () wird aufgerufen, um ein Handle für den Prozess zu erhalten, der den RPC-Aufruf initiiert hat.
  4. UpdateProcThreadAttribute () wird mit PROC_THREAD_ATTRIBUTE_PARENT_PROCESS aufgerufen und verwendet das in Schritt 3 abgerufene Handle.
  5. CreateProcessAsUser () wird mit EXTENDED_STARTUPINFO_PRESENT und den Ergebnissen der Schritte 1 und 4 aufgerufen.
  6. DeleteProcThreadAttributeList () wird aufgerufen.
  7. Die Ergebnisse werden gesammelt und die Griffe werden bereinigt.

Wir können eine einfache Schlussfolgerung ziehen. Tatsächlich ist runas ein normaler Prozess, der eine RPC-Anforderung an einen Prozess mit hohen Berechtigungen initiiert. Der Prozess mit hohen Berechtigungen (AppInfo-Dienst) erstellt einen Administratorprozess und legt den übergeordneten Prozess als normalen Prozess fest.

AppInfo unterstützt derzeit nicht das Einrichten eines Arbeitsverzeichnisses, der Eingabe und Ausgabe (obwohl CreateProcessAsUser aufgerufen wird), wenn der Administratorprozess gestartet wird. Dies ist ein Problem, das gelöst werden muss, damit die Sudo-Unterstützung in Windows Terminal ausgeführt werden kann. (ShellExecuteEx SEE_MASK_NO_CONSOLE funktioniert nicht)

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;

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

| Wert | Bedeutung |
| --- | --- |
| PROC_THREAD_ATTRIBUTE_PARENT_PROCESS | Der Parameter lpValue ist ein Zeiger auf ein Handle auf einen Prozess, der anstelle des aufrufenden Prozesses als übergeordnetes

Zu den vom angegebenen Prozess geerbten Attributen gehören Handles, die Gerätezuordnung, die Prozessoraffinität, die Priorität, die Kontingente, das Prozesstoken und das Jobobjekt. (Beachten Sie, dass einige Attribute wie der Debug-Port aus dem Erstellungsprozess stammen, nicht aus dem von diesem Handle angegebenen Prozess.) |

Dies ist definitiv ein Problem mit der Windows-Plattform. Ich weise es mir selbst zu, mit dem Team, dem es gehört, Kontakt aufzunehmen und dies abzuschließen. Vielen Dank.

Ich mag den Vorschlag von @ YMba9g8j9CJp0wLoQf5y, einen Tab mit eskalierten Berechtigungen zu autorisieren. Ich komme aus ConEmu, wo wir einen Tab mit oder ohne Administratorrechte erstellen können. Beim Erstellen eines Admin-Tabs werde ich (für immer) zur Benutzerkontensteuerung aufgefordert.

Ist dies nicht nur ein normales Verhalten von Windows Store-Anwendungen? Dies sieht aus wie die kürzlich veröffentlichte Vorschau-App.
Aber ich brauche einen Weg, um erhöhte Muscheln laufen zu lassen. Dies scheint heute nicht möglich zu sein (Tabs als Administrator öffnen).

Hey, wir sind uns nicht sicher, ob wir etwas dagegen tun können. Würde es Ihnen etwas ausmachen, Feedback in der Kategorie "Entwicklerplattform> App-Bereitstellung" einzureichen? Dadurch wird es an das richtige Team weitergeleitet und es werden einige sehr nützliche Diagnoseinformationen gesammelt.

Verlinkung: Dies ist auch # 1538

Auch wenn ich der Entscheidung zustimme. Es macht es ziemlich schmerzhaft, chocolatey ohne dass das explizit im Admin-Modus ausgeführt wird. (

@musm Ich habe dies gerade in meiner PowerShell 6-Konfiguration:

function GoAdmin { start-process pwsh –verb runAs }

(Ersetzen Sie pwsh durch powershell wenn Sie die alte Powershell verwenden.)

Wenn ich also Pakete über Chocolatey installieren / aktualisieren muss, gebe ich GoAdmin (in der von Windows Terminal gehosteten PowerShell) ein, wodurch ich zu einem separaten Admin-Powershell-Fenster komme. Dort kann ich alle schokoladigen Admin-Befehle ausführen. Dann schließe ich einfach das Admin-Fenster und gebe refreshenv in meine Windows Terminal-Sitzung ein, um alle PATH-Variablen zu aktualisieren. Es ist ziemlich einfach.

Ich würde definitiv gerne einen Weg finden, um wt (Windows Terminal) zu starten, anstatt direkt zu einem "nackten" Pwsh zu gehen, aber das scheint nicht möglich zu sein. Aber es ist ein kleiner Kritikpunkt. Meh. :-)

Ich erhalte immer noch eine Fehlermeldung, wenn ich WT (0.9.433.0) als Administrator starten möchte:

image

Passiert auf mehreren Computern mit der neuesten Version von WT und Windows (v10.0.18363.657).
Verstehe nicht ganz, warum dieses Problem geschlossen ist und was die Problemumgehung ist.

Eigentlich hat es nie funktioniert, der letzte Kommentar, den ich bekam, war, es ist ein Windows-Problem und sie werden es mit dem Team besprechen.

Sie werden es mit dem Team erhöhen.

Das glaube ich nicht. Es ist eher wie " Sie sollten es mit dem Team erhöhen".

Ich bin mir sicher, dass sie nicht daran denken, Win Terminal v1 mit einer der wichtigsten Funktionen zu veröffentlichen.
Schade, da dadurch aktuelle Vorabversionen von WT unbrauchbar werden.

Dadurch wird ein neues Powershell-Fenster mit dem Administrator geöffnet. Nicht genau das, was wir wollen, aber es ist eine Umgehung. Erstellen Sie ein neues Profil mit der folgenden Befehlszeile.

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

Warum ist das geschlossen? Es muss noch eine Funktion zum Erhöhen der Registerkarte vorhanden sein.

Dies wird in einer Reihe anderer Probleme in diesem Repository verfolgt, deshalb.

@ DHowett-MSFT Danke. Welchem ​​Thema sollen wir folgen? Ich glaube nicht, dass es oben erwähnt wurde.

@musm Ich habe dies gerade in meiner PowerShell 6-Konfiguration:

function GoAdmin { start-process pwsh –verb runAs }

(Ersetzen Sie pwsh durch powershell wenn Sie die alte Powershell verwenden.)

Wenn ich also Pakete über Chocolatey installieren / aktualisieren muss, gebe ich GoAdmin (in der von Windows Terminal gehosteten PowerShell) ein, wodurch ich zu einem separaten Admin-Powershell-Fenster komme. Dort kann ich alle schokoladigen Admin-Befehle ausführen. Dann schließe ich einfach das Admin-Fenster und gebe refreshenv in meine Windows Terminal-Sitzung ein, um alle PATH-Variablen zu aktualisieren. Es ist ziemlich einfach.

Ich würde definitiv gerne einen Weg finden, um wt (Windows Terminal) zu starten, anstatt direkt zu einem "nackten" Pwsh zu gehen, aber das scheint nicht möglich zu sein. Aber es ist ein kleiner Kritikpunkt. Meh. :-)

Wo befindet sich diese Konfigurationsdatei in Windows?

Ich habe eine Problemumgehung gefunden. Sie können Schokolade verwenden, um ein Paket namens sudo zu installieren (choco install -y sudo). Dann können Sie sudo wie erwartet verwenden.

Anscheinend kann ich das Terminal derzeit als Administrator öffnen. Zumindest funktioniert es auf meinem Computer. Es wäre sogar noch besser, wenn wir als Administrator eine Registerkarte wie ConEmu erstellen könnten (die in # 632 behandelt wird), aber es macht derzeit keinen Sinn, dieses Problem erneut zu öffnen.

Andere verwandte ausstehende Funktionsanforderungen:

  • # 146 sudo denen @ Pens99 interessiert
  • # 576 Taskleisten-Jumplist; Ich betrachte dies als Ersatz für # 632 aufgrund von Sicherheitsaspekten (die ich aus der Sicherheitsbranche vollständig verstehe), insbesondere in Kombination mit # 3246.

Hoffe das hilft allen, die diesem Thread folgen.

@ DHowett-MSFT Welches Problem sollten wir verfolgen und markieren, um dieses Problem zu lösen? Das einzige andere Problem, auf das verwiesen wird, ist # 1538, das ebenfalls geschlossen ist.

Ich bin sicher, dass Microsoft nicht der Meinung sein kann, dass jeder Administratorrechte für seinen Standardbenutzer haben sollte, anstatt ein separates Administratorkonto zu verwenden, wenn er moderne Windows-Apps verwenden möchte. Dies widerspricht schließlich den üblichen Sicherheitspraktiken.

@danstur Das Beste, was ich für dieses

@ DHowett-MSFT Vielen Dank für die Probleme, ich bin froh zu hören, dass es verfolgt wird.

Zur Verdeutlichung: Wenn ich die Anwendung über die in # 1386 genannten Optionen installiere, kann ich sie dann als anderer Benutzer ausführen oder funktioniert das immer noch nicht? Es würde mir nichts ausmachen, die App bei den anderen Benutzern registrieren zu müssen (bedeutet das, dass Add-AppxPackage ?).

@ DHowett-MSFT Dustin Howett FTE Vielen Dank für die Probleme, ich bin froh zu hören, dass es verfolgt wird.

Zur Verdeutlichung: Wenn ich die Anwendung über die in # 1386 genannten Optionen installiere, kann ich sie dann als anderer Benutzer ausführen oder funktioniert das immer noch nicht? Es würde mir nichts ausmachen, die App bei den anderen Benutzern registrieren zu müssen (bedeutet das, dass Add-AppxPackage ?).

Das sollte gut funktionieren. Sie müssen Add-AppxPackage als diese Benutzer hinzufügen, ja. :Lächeln:

Ich bin froh zu sehen, dass es angeheftet wird.

Dies muss behoben werden, da das Terminal in jeder Windows-Umgebung, die mit separaten Administrator- und Benutzerkonten eingerichtet ist (wie es sein sollte), nicht für Administratoren verwendet werden kann, wenn es aus dem (empfohlenen) MS Store installiert wird

Ich bin froh zu sehen, dass es angeheftet wird.

Dies muss behoben werden, da das Terminal in jeder Windows-Umgebung, die mit separaten Administrator- und Benutzerkonten eingerichtet ist (wie es sein sollte), nicht für Administratoren verwendet werden kann, wenn es aus dem (empfohlenen) MS Store installiert wird

Eine Problemumgehung, die für mich funktioniert hat, bestand darin, sich als Administrator auf dem lokalen Computer anzumelden und das Terminal aus dem Store erneut zu "installieren". Wenn ich dann als Standardbenutzer angemeldet bin, kann ich das Terminal als Administrator ausführen

Ja, das Problem scheint zu sein, dass Store die App nur für den aktuellen Benutzer registriert. Das ist für die meisten Apps in Ordnung (eigentlich sollten die meisten Apps sowieso so installiert werden), aber nicht für administrative Apps wie Terminals.

Hey Zukunft ich: Das Problem der Ladenregistrierung wird intern mit ausführlich besprochen

Hallo,
Ich bin auch auf meinem regulären Konto auf dieses Problem gestoßen. Die Lösung besteht darin, die Terminal-App erneut zu installieren, während Sie in einem Administratorkonto angemeldet sind. Dann können Sie als Administrator auf Ihrem regulären Konto ausgeführt werden.

Hier gilt das gleiche. Problem scheint nicht gelöst zu sein

Ich habe noch eine andere, nicht perfekte Problemumgehung, mit der ein als Administrator ausgeführtes Tab nicht geöffnet werden kann, aber ein PowerShell-Fenster als Administrator über eine vorhandene Registerkarte (ohne Administrator) geöffnet werden kann:

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

Dies funktioniert genauso wie das Hinzufügen des Profils, wie von @CraigHead oben vorgeschlagen:
"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",

Außer dass meine meine Version ausgeführt wird, indem der Befehl elevate ausgeführt wird.

@ jt-github Das ist wie Sudo.

Siehe hier: https://github.com/pldmgg/Sudo

Genau, nur sudo ist viel cooler als meine, aber meine ist so einfach, dass es leicht zu verstehen und zu verwenden ist.

Wie viele von Ihnen bin auch ich auf dieses Problem gestoßen. Daher habe ich die folgenden Funktionen erstellt, um eine Admin-Shell entweder über Powershell.exe, pwsh.exe oder das Microsoft-Terminal zu öffnen


# 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
    }
}

Ich hoffe, jemand findet sie nützlich. Ich habe sie meinen PowerShell-Profilen hinzugefügt, damit sie immer verfügbar sind.

Hallo,
Ich bin auch auf meinem regulären Konto auf dieses Problem gestoßen. Die Lösung besteht darin, die Terminal-App erneut zu installieren, während Sie in einem Administratorkonto angemeldet sind. Dann können Sie als Administrator auf Ihrem regulären Konto ausgeführt werden.

Das hat auch bei mir funktioniert, es ist super nervig, aber in einem Unternehmensnetzwerk ist das so ziemlich der einzige Weg, der für mich funktioniert hat. Wenn Sie keinen lokalen Administrator haben, ist diese App so ziemlich eine Pleite für gehobene Privatpersonen in einem Unternehmensnetzwerk.

Ich bin froh zu sehen, dass es angeheftet wird.
Dies muss behoben werden, da das Terminal in jeder Windows-Umgebung, die mit separaten Administrator- und Benutzerkonten eingerichtet ist (wie es sein sollte), nicht für Administratoren verwendet werden kann, wenn es aus dem (empfohlenen) MS Store installiert wird

Eine Problemumgehung, die für mich funktioniert hat, bestand darin, sich als Administrator auf dem lokalen Computer anzumelden und das Terminal aus dem Store erneut zu "installieren". Wenn ich dann als Standardbenutzer angemeldet bin, kann ich das Terminal als Administrator ausführen

Nein, das hat bei mir nicht funktioniert :(

Also habe ich es herausgefunden.

Sie müssen es sowohl im Administratorkonto als auch im Hauptkonto installiert haben, aber auch das Administratorkonto muss angemeldet sein, damit es funktioniert. Damit meine ich, dass der Computer beim Administrator angemeldet sein muss, dann den Benutzer wechseln (nicht abmelden) und sich bei dem anderen Konto anmelden muss. Dadurch kann die App im Administratormodus ausgeführt werden.

Ich vermute, dass auf beiden Konten installierte Store-Apps nur dann als Administrator ausgeführt werden können, wenn ein Administratorkonto angemeldet ist.

Also habe ich es herausgefunden.

Sie müssen es sowohl im Administratorkonto als auch im Hauptkonto installiert haben, aber auch das Administratorkonto muss angemeldet sein, damit es funktioniert. Damit meine ich, dass der Computer beim Administrator angemeldet sein muss, dann den Benutzer wechseln (nicht abmelden) und sich bei dem anderen Konto anmelden muss. Dadurch kann die App im Administratormodus ausgeführt werden.

Ich vermute, dass auf beiden Konten installierte Store-Apps nur dann als Administrator ausgeführt werden können, wenn ein Administratorkonto angemeldet ist.

Das funktioniert bei mir. 👍

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen