Terminal: Fügen Sie "Windows-Terminal hier öffnen" zum Kontextmenü mit der rechten Maustaste hinzu

Erstellt am 30. Mai 2019  ·  235Kommentare  ·  Quelle: microsoft/terminal

"Windows-Terminal hier öffnen" zum Kontextmenü mit der rechten Maustaste hinzufügen?

Wir wissen, dass für Windows 7 standardmäßig, wenn wir auf "Umschalt + Rechtsklick mit der Maus" klicken, wenn wir in einen Ordner eintreten, ohne etwas auszuwählen, die Option "Befehlsfenster hier öffnen" angezeigt wird.

image

Während für Windows 10 standardmäßig, wenn wir auf "Umschalt + Rechtsklick mit der Maus" klicken, die Option "PowerShell-Fenster hier öffnen" angezeigt wird.

Wie können wir für Windows 10 (Version später als 1903) die folgenden drei Optionen im Kontextmenü mit der rechten Maustaste verfügbar machen?

  • Befehlsfenster hier öffnen
  • Öffnen Sie hier das Powershell-Fenster
  • Öffnen Sie hier das Windows-Terminal

Ich freue mich auf Ihre Antwort, vielen Dank ~

Area-User Interface Help Wanted Issue-Feature Product-Terminal Resolution-Fix-Committed

Hilfreichster Kommentar

Ich denke, wir würden es vorziehen, wenn das Terminal diese Verknüpfung automatisch im Namen des Benutzers registriert.

Alle 235 Kommentare

Wenn Sie es hinzufügen, sollte es meiner Meinung nach eine weitere Auswahloption im geöffneten Windows-Terminal geben , um tatsächlich auszuwählen, welche Shell als Untermenü des Kontextmenüs (oder ähnlichem) geöffnet werden soll, wobei der 'Name' in die Profile des Terminals geschrieben wird, wie z

  • Power Shell
  • CMD
  • Ubuntu

Ich denke, dies ist eine gute Feature-Anfrage und etwas, für das wir definitiv die Hilfe der Community akzeptieren würden.

Mein Bauch sagt, dass es mit der Arbeit für # 689 zu tun haben würde, aber ich weiß nicht genug über Win32, um sicher zu sein.

Dies ist wahrscheinlich ungefähr so: https://www.codeproject.com/Articles/441/The-Complete-Idiot-s-Guide-to-Writing-Shell-Extens

Aber hoffentlich ohne ATL wieder in unsere Codebasis einzuführen ...

Es ist viel einfacher, einem Ordner-Kontextmenü einen einzelnen Befehl hinzuzufügen. Es ist nur ein einfacher Registrierungsschlüssel.

Zum Beispiel (und dann können Sie auch ein Symbol usw. hinzufügen)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Open Thing Here\command]
@="C:\\thing.exe \"%1\""

Für pakakged Apps wird dies im Manifest deklariert. Siehe hierzu: https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap-filetypeassociation. Ich glaube nicht, dass dies Ordner unterstützt, aber fangen Sie an, hier zu suchen.

Wahrscheinlich ein Duplikat von # 561, aber wir werden es hier verfolgen.

@miniksa @ zadjii-msft @ DHowett-MSFT @factormystic @ChrisGuzak

Ich habe das Problem jetzt gelöst, es könnte geschlossen werden. Vielen Dank an alle, die an dieser Diskussion beteiligt waren.

Schritt 0:

Testen Sie, ob zwei der folgenden Konstanten gut funktionieren. Diese werden in den folgenden anderen Schritten verwendet.

echo %USERPROFILE%

echo %LOCALAPPDATA%

Wenn hier alles gut funktioniert, können diese beiden Konstanten direkt in den folgenden Schritten verwendet werden.

Oder führen Sie die folgenden Ersetzungen in den folgenden Schritten durch:

% USERPROFILE% → C:\Users\[userName]
% LOCALAPPDATA% → C:\Users\[userName]\AppData\Local

Hier steht [userName] für Ihren Benutzernamen. Mein Name ist zum Beispiel Bruce .

Schritt 1:
Laufen Sie unter Sachen in CMD :

mkdir "%USERPROFILE%\AppData\Local\terminal"

image

Schritt 2:
Kopieren Sie das Windows-Terminalsymbol in den Ordner %USERPROFILE%\AppData\Local\terminal . Das Symbol finden Sie unter https://github.com/yanglr/WindowsDevTools/tree/master/awosomeTerminal/icons mit dem Dateinamen wt_32.ico .

Schritt 3:
Speichern Sie den folgenden Inhalt als wt.reg und führen Sie ihn als Administrator aus.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt_32.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"

Zu beachten ist, wenn die exe selbst nach Bauordnung erhalten wtd.exe , müssen Sie die oben ändern wt.exe bis wtd.exe in der obigen Registrierung.

Schritt 4:
Prüfung
image

Das hat bei mir nicht funktioniert (ich kann nicht auf den Fehler zugreifen), und bei mir war es wtd.exe (hat nicht einmal funktioniert).
Und ich denke, das könnte das Terminal-Feature sein.

@ SJang1
Ich denke, Sie haben die Version verwendet, die Sie selbst erstellt haben. Sie müssen also wtd.exe . Damit eingehende offizielle Versionen Windows Store eingeben können, ist wt.exe hier die richtige Option. Im Moment können Sie hier eine Vorschau-Version erhalten ( .7z -Datei unter https://github.com/yanglr/WindowsDevTools/tree/master/awosomeTerminal ) und nach der Installation wt.exe . Ich habe diese Methode übernommen.

@yanglr Ich habe wtd.exe verwendet und habe nicht mit dem Fehler gearbeitet,

@ SJang1
Ich denke, Sie haben den Code in Debug mode . Bitte wechseln Sie zu Release mode , siehe unten:
image

@ Yanglr
Bereits in Release gebaut.
image

Ich denke, wir würden es vorziehen, wenn das Terminal diese Verknüpfung automatisch im Namen des Benutzers registriert.

@ zadjii-msft
Cool, toll!

Dies wurde noch nicht hinzugefügt, daher würde ich es vorziehen, dieses Problem offen zu halten, bis die Arbeit zum Hinzufügen abgeschlossen ist :)

Kann ich es versuchen, wenn niemand daran arbeitet?

@ MelulekiDube los geht's!

Mein Haupttipp hier wäre, dass wir versucht haben, TerminalApp UWP-ähnlicher zu halten und Win32-ähnliche Dinge im WindowsTerminal-Projekt zu tun. Da diese Funktion wahrscheinlich ziemlich Win32-schwer ist, würde ich wahrscheinlich eine Art Ereignis vorschlagen, das App (in TerminalApp) auslösen kann, um AppHost (in WindowsTerminal) darüber zu informieren, dass es eingerichtet werden soll die Abkürzungen. Als Beispiel glaube ich, dass es ein Ereignis TitleChanged , das App kann, damit AppHost den Titel des Fensters festlegt.

Da ein Profile kein WinRT-Typ ist, kann es außerdem schwierig sein, seine Mitglieder direkt aus dem WindowsTerminal-Projekt zu erreichen. Möglicherweise müssen die App die relevanten Bits der Profile im Ereignis selbst kommunizieren. Alternativ können Sie versuchen, einen WinRT-Typ (einschließlich einer IDL-Datei) zu erstellen. Dies ist jedoch möglicherweise etwas schwieriger.

Viel Glück!

EDIT: Ich überarbeite diese Aussage zu HERE BE DRAGONS . Es gibt Arbeiten, die möglicherweise in # 607 / # 1065 erledigt werden müssen, bevor dies überhaupt erledigt werden kann.

Ich mache mir Sorgen, dass dies ziemlich eng mit # 607 verknüpft werden muss, das sich noch in der Pre-Spec-Phase befindet.

@ DHowett-MSFT das ist ein guter Punkt. Ich habe auch die jüngste Regression in # 1065 vergessen. Dies könnte tatsächlich unter die Kategorie der harten Dinge fallen. Selbst wenn wir es nicht pro Profil machen würden, würde das Öffnen des Standardprofils im aktuellen Verzeichnis nicht funktionieren.

Ich weiß nicht einmal, wie wir # 1065 beheben würden, aber wenn wir das beheben würden, könnten wir theoretisch einen Weg finden, die neue Windows Terminal-Instanz mithilfe des Verzeichnisses aus dem Explorer zu erstellen, aber das würde das Problem nicht wirklich lösen -Profilproblem. hmmmm.

Könnte so etwas wie das staringDirectory verfügbar machen, damit Sie es als Option an die exe übergeben können?

Ja, das ist Teil des Punktes in # 607.

Hallo @yanglr ,
Dies ist nicht der geeignete Ort für diese Diskussion. In diesem Problem wird die Funktion "Windows-Terminal hier öffnen" erläutert.

@ DHowett-MSFT
Oh, sorry, gelöscht.

Ich denke, es wäre großartig, nicht nur "Windows Terminal hier öffnen" zu haben, sondern auch "Windows Terminal hier öffnen (Administrator)", da beide von allen gut genutzt werden.

Ich habe so darüber nachgedacht,
image
..und wenn es gefällt, was ich dachte, scheint kein Ort, um als Administrator laufen zu lassen.

Ich habe so darüber nachgedacht,
image
..und wenn es gefällt, was ich dachte, scheint kein Ort, um als Administrator laufen zu lassen.

... es sei denn, Sie legen ein zweites Hauptmenü "WT hier öffnen (Administrator)" mit denselben Untermenüelementen an. Beides sollte sowieso optional sein, denke ich.

Ich habe die Registrierung bearbeitet, um die Option zum Kontextmenü hinzuzufügen. Es wird jedoch mit C: \ Users \ username anstelle des aktuellen Verzeichnisses geöffnet.

@ Minhtuanta

Ich mache mir Sorgen, dass dies ziemlich eng mit # 607 verknüpft werden muss, das sich noch in der Pre-Spec-Phase befindet.

Könnte so etwas wie das staringDirectory verfügbar machen, damit Sie es als Option an die exe übergeben können?

Ja, das ist Teil des Punktes in # 607.

wt.exe unterstützt noch keine Befehlszeilenargumente, daher kann nicht überschrieben werden, in welchem ​​Ordner das neue Profil beginnt.

Wenn ich einen Vorschlag machen könnte, würde ich sagen, dass die Optionen zum Öffnen in Powershell-, CMD- und / oder Linux-Terminal durch "In Windows-Terminal öffnen" ersetzt werden sollten, da das Windows-Terminal die Kombination aller drei ist. Dann kann ein Benutzer seinen Standardwert aus der Datei profile.json festlegen.

@yanglr @lllopo @ SJang1

So etwas sollte vorerst funktionieren. Ich habe es in PowerShell geschrieben, weil es sich um ein Windows-ISO-Skript nach der Installation handelt, aber ich sehe kein Problem bei der Verwendung dieses Skripts im Gegensatz zu einer REG-Datei.

Power Shell:

$Env.terminalDir ='$Env:localAppDir\Microsoft\WindowsApps' # Not really needed (except for icon), as wt.exe in in %PATH%

Invoke-WebRequest -UseBasicParsing "https://github.com/yanglr/WindowsDevTools/raw/master/awosomeTerminal/icons/wt_32.ico" -OutFile "$Env:terminalDir\wt.ico"  # Going to update my own to just grab icon from the appx package

Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\Background\shell\MenuTerminal' -Name 'MUIVerb' -Type String -Value 'Terminals'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\Background\shell\MenuTerminal' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\Background\shell\MenuTerminal' -Name 'ExtendedSubCommandsKey' -Type String -Value 'Directory\\ContextMenus\\MenuTerminal'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'MUIVerb' -Type String -Value 'PowerShell'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'Icon' -Type String -Value 'PowerShell.exe'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'ExtendedSubCommandsKey' -Type String -Value 'Directory\\ContextMenus\\MenuTerminal\\PS'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\open' -Name 'MUIVerb' -Type String -Value 'PowerShell'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\open' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\open\command' -Name '@' -Type String -Value 'wt.exe'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas' -Name 'MUIVerb' -Type String -Value 'Elevated PowerShell'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas' -Name 'HasLUAShield' -Type String -Value ''
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas\command'-Name '@' -Type String -Value 'wt.exe'

Und so etwas sollte funktionieren, wenn man beim Starten des Terminals zwischen CMD und PowerShell wählen kann (vorausgesetzt, es verwendet --Profile [CMD | PowerShell] ):

Power Shell:

$Env.terminalDir ='$Env:localAppDir\Microsoft\WindowsApps'   # Not really needed (except for icon), as wt.exe in in %PATH%

Invoke-WebRequest -UseBasicParsing "https://github.com/yanglr/WindowsDevTools/raw/master/awosomeTerminal/icons/wt_32.ico" -OutFile "$Env:terminalDir\wt.ico"  # Going to update my own to just grab icon from the appx package

Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\Background\shell\MenuTerminal' -Name 'MUIVerb' -Type String -Value 'Terminals'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\Background\shell\MenuTerminal' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\Background\shell\MenuTerminal' -Name 'ExtendedSubCommandsKey' -Type String -Value 'Directory\\ContextMenus\\MenuTerminal'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'MUIVerb' -Type String -Value 'Command Prompt'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'Icon' -Type String -Value 'cmd.exe'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'ExtendedSubCommandsKey' -Type String -Value 'Directory\\ContextMenus\\MenuTerminal\\CMD'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\CMD\shell\open' -Name 'MUIVerb' -Type String -Value 'Command Prompt'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\CMD\shell\open' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\CMD\shell\open\command' -Name '@' -Type String -Value 'wt.exe --profile CMD'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\CMD\shell\runas' -Name 'MUIVerb' -Type String -Value 'Elevated Terminal'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\CMD\shell\runas' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\CMD\shell\runas' -Name 'HasLUAShield' -Type String -Value ''
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\CMD\shell\runas\command'-Name '@' -Type String -Value 'wt.exe --profile CMD'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'MUIVerb' -Type String -Value 'PowerShell'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'Icon' -Type String -Value 'PowerShell.exe'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\shell\open' -Name 'ExtendedSubCommandsKey' -Type String -Value 'Directory\\ContextMenus\\MenuTerminal\\PS'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\open' -Name 'MUIVerb' -Type String -Value 'PowerShell'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\open' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\open\command' -Name '@' -Type String -Value 'wt.exe --profile PowerShell'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas' -Name 'MUIVerb' -Type String -Value 'Elevated PowerShell'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas' -Name 'Icon' -Type String -Value '$Env:terminalDir\wt.ico'
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas' -Name 'HasLUAShield' -Type String -Value ''
Set-ItemProperty-Path 'HKEY_CLASSES_ROOT\Directory\ContextMenus\MenuTerminal\PS\shell\runas\command'-Name '@' -Type String -Value 'wt.exe --Profile PowerShell'

@yanglr Ich habe Ihre Schritte befolgt. Das Menü mit der rechten Maustaste wird angezeigt. Wenn Sie jedoch auf explorer.exe

Wenn Sie "% LOCALAPPDATA% \ Microsoft \ WindowsApps \ wt.exe" an der cmd-Eingabeaufforderung ausführen, wird das neue Terminal wie erwartet geöffnet, und ich habe ein ähnliches Setup für msys, wsl-terminal, alles funktioniert einwandfrei, nur das Windows-Terminal funktioniert nicht.

@ chen-xin Dies ist etwas, das für mich für den Zugriffsfehler funktioniert hat.
Befolgen Sie die gleichen Schritte wie unter https://github.com/microsoft/terminal/issues/1060#issuecomment -497539461
Verwenden Sie für den Pfad wt.exe anstelle von %LOCALAPPDATA% den tatsächlichen vollständigen Pfad wie C:\\Users\\[your_user_acc]\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe .

Fügen Sie außerdem keine startingDirectory in den Einstellungen hinzu.

@saisandeepvaddi Es hat auf vollem

@miniksa @ zadjii-msft @ DHowett-MSFT @factormystic @ChrisGuzak

Ich habe das Problem jetzt gelöst, es könnte geschlossen werden. Vielen Dank an alle, die an dieser Diskussion beteiligt waren.

Schritt 0:

Testen Sie, ob zwei der folgenden Konstanten gut funktionieren. Diese werden in den folgenden anderen Schritten verwendet.

echo %USERPROFILE%

echo %LOCALAPPDATA%

Wenn hier alles gut funktioniert, können diese beiden Konstanten direkt in den folgenden Schritten verwendet werden.

Oder führen Sie die folgenden Ersetzungen in den folgenden Schritten durch:

% USERPROFILE% → C:\Users\[userName]
% LOCALAPPDATA% → C:\Users\[userName]\AppData\Local

Hier steht [userName] für Ihren Benutzernamen. Mein Name ist zum Beispiel Bruce .

Schritt 1:
Laufen Sie unter Sachen in CMD :

mkdir "%USERPROFILE%\AppData\Local\terminal"

image

Schritt 2:
Kopieren Sie das Windows-Terminalsymbol in den Ordner %USERPROFILE%\AppData\Local\terminal . Das Symbol finden Sie unter https://github.com/yanglr/WindowsDevTools/tree/master/awosomeTerminal/icons mit dem Dateinamen wt_32.ico .

Schritt 3:
Speichern Sie den folgenden Inhalt als wt.reg und führen Sie ihn als Administrator aus.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt_32.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"

Zu beachten ist, wenn die exe selbst nach Bauordnung erhalten wtd.exe , müssen Sie die oben ändern wt.exe bis wtd.exe in der obigen Registrierung.

Schritt 4:
Prüfung
image

image

Ich habe Ihre Anweisung befolgt, aber dieser Fehler tritt überall dort auf, wo ich das Windows-Terminal hier starte.

@Villivateur haben Sie https://github.com/microsoft/terminal/issues/1060#issuecomment -515134618 ausprobiert

@miniksa @ zadjii-msft @ DHowett-MSFT @factormystic @ChrisGuzak
Ich habe das Problem jetzt gelöst, es könnte geschlossen werden. Vielen Dank an alle, die an dieser Diskussion beteiligt waren.
Schritt 0:
Testen Sie, ob zwei der folgenden Konstanten gut funktionieren. Diese werden in den folgenden anderen Schritten verwendet.

echo %USERPROFILE%

echo %LOCALAPPDATA%

Wenn hier alles gut funktioniert, können diese beiden Konstanten direkt in den folgenden Schritten verwendet werden.
Oder führen Sie die folgenden Ersetzungen in den folgenden Schritten durch:
% USERPROFILE% → C:\Users\[userName]
% LOCALAPPDATA% → C:\Users\[userName]\AppData\Local
Hier steht [userName] für Ihren Benutzernamen. Mein Name ist zum Beispiel Bruce .
Schritt 1:
Laufen Sie unter Sachen in CMD :

mkdir "%USERPROFILE%\AppData\Local\terminal"

image
Schritt 2:
Kopieren Sie das Windows-Terminalsymbol in den Ordner %USERPROFILE%\AppData\Local\terminal . Das Symbol finden Sie unter https://github.com/yanglr/WindowsDevTools/tree/master/awosomeTerminal/icons mit dem Dateinamen wt_32.ico .
Schritt 3:
Speichern Sie den folgenden Inhalt als wt.reg und führen Sie ihn als Administrator aus.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt_32.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"

Zu beachten ist, wenn die exe selbst nach Bauordnung erhalten wtd.exe , müssen Sie die oben ändern wt.exe bis wtd.exe in der obigen Registrierung.
Schritt 4:
Prüfung
image

image

Ich habe Ihre Anweisung befolgt, aber dieser Fehler tritt überall dort auf, wo ich das Windows-Terminal hier starte.

Wie @saisandeepvaddi metuled,
Verwenden Sie wt.exe Pfad %LOCALAPPDATA% den tatsächlichen vollständigen Pfad wie C:\\Users\\[your_user_acc]\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe .

Fügen Sie außerdem keine startingDirectory in den Einstellungen hinzu.

Es funktioniert gut in meinem PC. Du kannst es versuchen.

Es wurde versucht, wt.exe zur Registrierung hinzuzufügen, wie zuvor beschrieben, aber ich habe folgenden Fehler:
image

Das Terminal wird normalerweise über die Befehlszeile (Win + R | "wt") gestartet.

Ich denke, die Anpassung des neuen Terminals ist eine Stärke. Was wäre, wenn dies in den Einstellungen wäre? Sagen Sie "ExplorerIntegration": true . Dann könnte ein Batch-Skript sie wie im FluentTerminal- Projekt

Hey, ich habe nur ein bisschen herumgehackt, um Windows Terminal in einem bestimmten Rechtsklick-Ordner öffnen zu können, und dachte, es könnte für jemanden interessant / nützlich sein. Dies scheint auch zu funktionieren, wenn Sie in das Linux-Subsystem wechseln, nicht jedoch in CMD. Sie können das Powershell-Profil auch einfach nicht verwenden und $ env mit einem etwas schöneren Namen verwenden, um eine Variable zu erhalten, die für alle drei verwendet werden kann.

Angenommen, Sie haben die obige Anleitung befolgt, benötigen Sie zwei zusätzliche Dateien:

C: \ Benutzer \ [Ihr Benutzername] AppData \ Local \ terminal \ launchwt.bat

set wt_powershell_dir=%cd%
start %LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe
exit

C: \ Benutzer \ [Ihr Benutzername] \ Dokumente \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

if (Test-Path $env:wt_powershell_dir) {
   cd $env:wt_powershell_dir
   Remove-Item Env:\wt_powershell_dir
}

Sie müssen auch zu dem Registrierungsschlüssel gehen, den Sie installiert und aktualisiert haben, um auf die Batchdatei zu verweisen:

Computer\HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command

C:\Users\[Your Username]\AppData\Local\terminal\launchwt.bat

Bisher hat es Spaß gemacht, mit dem Terminal herumzuspielen, danke Haufen 😄.

@minhtuanta Versuchen Sie, startingDirectory in den Einstellungen zu löschen. 😊

Das Löschen von startingDirectory funktioniert bei mir. Was für eine hinterhältige Einstellung 😛

Als Alternative zum Rechtsklick-Menü (bisher großartige Arbeit): Wenn Sie die Adressleiste Ihres aktuellen Verzeichnisses markieren, indem Sie ctrl+l drücken oder darauf klicken und dann wt.exe , wird das Windows-Terminal geöffnet Ihre Standard-Shell in diesem Verzeichnis.

@kaeside möchte die Standard-Shell im aktuellen Verzeichnis "in einer neuen Registerkarte, wenn das Terminal bereits ausgeführt wird" hinzufügen.

Sie können das echte Symbol aus dem Repo in Github erhalten

@kaeside Ich bin cmd ) und sie wird im aktuellen Arbeitsverzeichnis geöffnet, aber im Fall von Windows Terminal wird sie immer in der geöffnet Benutzerverzeichnis.
Zumindest für Version: 0.3.2171.0

Ja, das liegt an startingDirectory , das in einer Reihe anderer Kommentare in diesem Thread erwähnt wird. Das Update ist # 607, was auch erwähnt wird.

Es wurde versucht, wt.exe zur Registrierung hinzuzufügen, wie zuvor beschrieben, aber ich habe folgenden Fehler:
image

Das Terminal wird normalerweise über die Befehlszeile (Win + R | "wt") gestartet.

In meinem Fall befindet sich wt.exe in C:\Users\[your_user_name]\AppData\Local\Microsoft\WindowsApps\ .
Und Sie können jedes Element in Ihrer Umgebungsvariablen% PATH% überprüfen.

Ich habe kürzlich das Windows-Terminal auf Version: 0.5.2661.0 aktualisiert.
Plötzlich klicken Sie mit der rechten Maustaste auf das Kontextmenü "Windows-Terminal hier öffnen" und beginnen immer mit C:\Users\[username] , auch wenn die Datei "profile.json" kein "Startverzeichnis" enthält.

Was das für mich behebt, war das Hinzufügen von "StartingDirectory": "." zu den Profilen.json.
Hoffe das hilft jemandem mit ähnlichen Problemen.

Eine Batch-Datei, die die Probleme mit der Lösung von @yanglr löst. Der Grund, warum die Umgebungsvariablen nicht funktionierten, ist insbesondere, dass die sie enthaltenden Zeichenfolgen als REG_MULTI_SZ hinzugefügt werden müssen, nicht als Standard-REG_SZ.

<strong i="7">@echo</strong> off

reg.exe add "HKEY_CLASSES_ROOT\Directory\Background\shell\wt" /f /ve /d "Windows Terminal here"
reg.exe add "HKEY_CLASSES_ROOT\Directory\Background\shell\wt" /f /v "Icon" /t REG_EXPAND_SZ /d "\"%%USERPROFILE%%\Downloads\terminal.ico\""

reg.exe add "HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command" /f /ve /t REG_EXPAND_SZ /d "\"%%LOCALAPPDATA%%\Microsoft\WindowsApps\wt.exe\""

pause

Legen Sie das Obige in einer .bat-Datei ab, passen Sie den Speicherort des Symbols nach Belieben an, speichern Sie es und führen Sie es als Administrator aus . Und vergessen Sie nicht startingDirectory in . , damit dies wie erwartet funktioniert.

@IanKemp Nun, Umgebungsvariablen funktionieren dank, aber seit dem letzten Update aus dem App Store wird es nicht im Verzeichnis geöffnet. Haben Sie eine Lösung dafür?

@poqdavid Ich schlage vor, Sie lesen den Kommentar von @rendrap , wie ich vorgeschlagen habe.

Ich habe also den Rechtsklick auf "Windows-Terminal hier öffnen", aber ich kann nicht herausfinden, wie ich es als Administrator ausführen kann. Ich habe versucht, Runas in der Registrierung sowie das Runas-Verb zu verwenden, ohne Glück.

Wenn ich jedoch die Windows-Taste drücke -> Terminal eingeben -> auf "Als Administrator ausführen" klicke, wird ein Windows-Terminal als Administrator ausgeführt, sodass dies definitiv möglich ist.

Was ist die geheime Sauce, um die WT-Umgebung so einzurichten, dass sie als Administrator startet?

@IanKemp Wenn Sie hauptsächlich mit Powershell arbeiten, können Sie sudo ausprobieren. Mit diesem Skript können Sie Befehle als Administrator in einem nicht erhöhten Powershell-Fenster ausführen.

Hier ist meine Datei, die ich benutze, sie öffnet den Pfad nicht, aber sie sieht zumindest gut aus:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="%ProgramFiles%\\WindowsApps\\Microsoft.WindowsTerminal_0.5.2681.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe"
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\andre\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"


[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Windows terminal here"
"Icon"="%ProgramFiles%\\WindowsApps\\Microsoft.WindowsTerminal_0.5.2681.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe"
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="C:\\Users\\andre\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

BEARBEITEN: Wie oben erwähnt, setzen Sie Ihr Startverzeichnis auf "." in Ihren profile.json

"startingDiretory" : ".",

Ich benutze Windows Terminal mit Ubuntu WSL
Gibt es eine Möglichkeit, dies so zu gestalten, dass wenn ich "Windows-Terminal hier" verwende, es in dem Verzeichnis geöffnet wird, in dem ich mich befinde, aber wenn ich Windows Terminal nur normal starte, wird ich in Ubuntu ~ abgelegt?

Es war relativ einfach, mich standardmäßig in Ubuntu nach Hause zu bringen:
"commandline" : "wsl.exe ~ -d Ubuntu-18.04"
Aber dann bringt das Hinzufügen von "startingDirectory": "." natürlich nicht das erwartete Ergebnis für die Kontextmenü-Verknüpfung. Ohne das ~ in commandline entsteht eine Shell in /mnt/c/Windows/System32

Hier ist ein Ausschnitt aus meiner Einstellungsdatei:

    "defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "profiles":
    [
        {
            "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
            "name": "Ubuntu",
            // ... SNIPP
            //"startingDirectory" : "\\\\wsl$\\Ubuntu\\home\\andre",
            "startingDirectory" : ".",
            // ... SNIPP
        },
        // ... SNIPP
    ]

Dieser öffnet das Verzeichnis, in dem Sie sich befinden, wenn Sie Windows terminal here . Öffnet aber /mnt/c/Windows/System32 wenn das Terminal normal geöffnet ist. Ich selbst habe dieses Problem nicht gelöst.
Wie Sie sehen können, habe ich das Home-Verzeichnis auch früher hart definiert, bevor ich anfing, "."

@ zambelly Derzeit nicht. In diesem Szenario müsste wahrscheinlich # 878 repariert werden, um unterstützen zu können.

Ich habe also den Rechtsklick auf "Windows-Terminal hier öffnen", aber ich kann nicht herausfinden, wie ich es als Administrator ausführen kann. Ich habe versucht, Runas in der Registrierung sowie das Runas-Verb zu verwenden, ohne Glück.

Wenn ich jedoch die Windows-Taste drücke -> Terminal eingeben -> auf "Als Administrator ausführen" klicke, wird ein Windows-Terminal als Administrator ausgeführt, sodass dies definitiv möglich ist.

Was ist die geheime Sauce, um die WT-Umgebung so einzurichten, dass sie als Administrator startet?

@IanKemp Sie können dies versuchen, indem Sie den Wert von command unter dem Registrierungsschlüssel runas ändern:
cmd.exe /s /c pushd "%V" & start wt.exe

Obwohl es ein bisschen umständlich ist, funktioniert das zumindest für mich.

Gibt es eine Möglichkeit, stattdessen eine Registerkarte hinzuzufügen, wenn bereits eine Instanz von wt.exe ausgeführt wird?
Und gibt es eine Möglichkeit anzugeben, welches Profil die neue Registerkarte hat?

Es wurde versucht, wt.exe zur Registrierung hinzuzufügen, wie zuvor beschrieben, aber ich habe folgenden Fehler:
image

Das Terminal wird normalerweise über die Befehlszeile (Win + R | "wt") gestartet.

Das gleiche Problem meinerseits, ich weiß nicht, wie ich es beheben soll. Registrierungsdatei wie folgt:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Open Windows terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"


[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Open Windows terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt.ico"

[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"

Sie müssen einen absoluten Pfad haben und keine Variable verwenden
Siehe: https://github.com/microsoft/terminal/issues/1060#issuecomment -536322970

Ich denke, dies ist der Grund, warum ich Terminal nicht mehr verwende, da die Art und Weise, wie ich die Eingabeaufforderung öffne, zu 80% im Datei-Explorer erfolgt. Der Rest stammt von Win + R + cmd + Enter, und ich habe gerade etwas über den Alias wt erfahren, damit das hilft.

Wenn dies erledigt ist, gibt es eine großartige Möglichkeit, es auch in den Einstellungen anzuzeigen, in denen der PowerShell / CMD-Schalter vorhanden ist:

image

Es wäre großartig, nur die Option zu haben, die bevorzugte Shell als Dropdown-Liste auszuwählen und Terminal als Option zu haben, wenn es installiert ist.

@ michael-hawker was du hier wirklich suchst ist # 492 😁

Ich habe den gesamten Prozess in eine Bat-Datei automatisiert, die Sie als Administrator ausführen müssen.
Fügen Sie Windows terminal zum Kontextmenü.zip hinzu
Sie müssen das Startverzeichnis in profile.json noch in "startingDirectory" : ".", ändern

@ Restia666Ashdoll , die die .ico nicht richtig zu bekommen scheint

Funktioniert hier allerdings
image

Versuche dies. Öffnen Sie den Speicherort der Datei terminal.ico. Gehen Sie nun zur Adressleiste und geben Sie "cmd" ein.
Geben Sie nun in der Eingabeaufforderung den folgenden Befehl ein
xcopy "terminal.ico" "%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\" /b /v /y /q

Funktioniert nicht

Öffnen Sie einfach "% LOCALAPPDATA% \ Packages \ Microsoft.WindowsTerminal_8wekyb3d8bbwe \ LocalState" und kopieren Sie die ico-Datei dann manuell

Ja, das habe ich getan, aber das Problem ist, dass der Registrierungsschlüssel die ico nicht aufnimmt

Ich habe den gesamten Prozess in eine Bat-Datei automatisiert, die Sie als Administrator ausführen müssen.
Fügen Sie Windows terminal zum Kontextmenü.zip hinzu
Sie müssen das Startverzeichnis in profile.json noch in "startingDiretory" : ".", ändern

Warnung: Es ist ein Tippfehler aufgetreten. Verwenden Sie stattdessen "startingDirectory" : "." .

Was ist mit dem Schlüssel HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\wt ? Es ist keine Administratorberechtigung erforderlich

Was ist mit dem Schlüssel HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\wt ? Es ist keine Administratorberechtigung erforderlich

Es ist nur für den aktuellen Benutzer.

@ Restia666Ashdoll und @musm , melden Sie sich ab und wieder an, nachdem Sie die ico-Datei in den LocalAppData-Ordner kopiert haben. Das Symbol wird dann angezeigt.

image

@edrohler Warum

@ Horacehxw das ist nur wenn es der letzte Eintrag ist.

@ Restia666Ashdoll Ich habe Sie zitiert und gedacht, Sie möchten die Informationen möglicherweise mit Ihrem Batch-Skript teilen, wenn jemand anderes danach fragt. :) :)

Abmelden und erneut anmelden

@edrohler Verwenden Sie den Task-Manager, um explorer.exe neu zu starten.
Wenn Sie mindestens 1 Ordner geöffnet haben, zeigt der Task-Manager an der normalen Position von Task beenden die

@ Horacehxw das ist nur wenn es der letzte Eintrag ist.

Das Problem ist nicht das Komma am Ende, sondern die Schreibweise von "Verzeichnis". Dem vorherigen fehlt "c".

Ich habe den gesamten Prozess in eine Bat-Datei automatisiert, die Sie als Administrator ausführen müssen.
Fügen Sie Windows terminal zum Kontextmenü.zip hinzu
Sie müssen das Startverzeichnis in profile.json noch in "startingDirectory" : ".", ändern

Ich habe es versucht, aber zwei Probleme: Es gibt jetzt startingDirectory in profile.json:


// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",

    "profiles":
    [
        {
            // Make changes here to the powershell.exe profile
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false
        },
        {
            // Make changes here to the cmd.exe profile
            "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "name": "cmd",
            "commandline": "cmd.exe",
            "hidden": false
        },
        {
            "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
            "hidden": false,
            "name": "Azure Cloud Shell",
            "source": "Windows.Terminal.Azure"
        },
        {
            "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
            "hidden": false,
            "name": "Ubuntu-18.04",
            "source": "Windows.Terminal.Wsl"
        }
    ],

    // Add custom color schemes to this array
    "schemes": [],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": []
}

Ein weiteres Problem ist, dass das Terminal nicht zum richtigen "Hier" -Pfad wechselt, sondern nur auf meinem Benutzerpfad startet

Ich habe den gesamten Prozess in eine Bat-Datei automatisiert, die Sie als Administrator ausführen müssen.
Fügen Sie Windows terminal zum Kontextmenü.zip hinzu
Sie müssen das Startverzeichnis in profile.json noch in "startingDiretory" : ".", ändern

Warnung: Es ist ein Tippfehler aufgetreten. Verwenden Sie stattdessen "startingDirectory" : "." .

Das funktioniert super, wenn Sie hier richtig und offen sind ...
Das einzige Problem, das mir aufgefallen ist, ist, dass wenn Sie das Terminal normal öffnen ... das Standardverzeichnis ist system32 ... gibt es eine Möglichkeit, es zu überschreiben und den Benutzerordner zu verwenden, wenn es zufällig normal geöffnet wird?

Ich habe den gesamten Prozess in eine Bat-Datei automatisiert, die Sie als Administrator ausführen müssen.
Fügen Sie Windows terminal zum Kontextmenü.zip hinzu
Sie müssen das Startverzeichnis in profile.json noch in "startingDirectory" : ".", ändern

Ich habe es versucht, aber zwei Probleme: Es gibt jetzt startingDirectory in profile.json:


// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",

    "profiles":
    [
        {
            // Make changes here to the powershell.exe profile
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false
        },
        {
            // Make changes here to the cmd.exe profile
            "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "name": "cmd",
            "commandline": "cmd.exe",
            "hidden": false
        },
        {
            "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
            "hidden": false,
            "name": "Azure Cloud Shell",
            "source": "Windows.Terminal.Azure"
        },
        {
            "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
            "hidden": false,
            "name": "Ubuntu-18.04",
            "source": "Windows.Terminal.Wsl"
        }
    ],

    // Add custom color schemes to this array
    "schemes": [],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": []
}

Ein weiteres Problem ist, dass das Terminal nicht zum richtigen "Hier" -Pfad wechselt, sondern nur auf meinem Benutzerpfad startet

Hier ist mein Profil, wenn Sie interessiert sind

{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "globals" : 
    {
        "alwaysShowTabs" : true,
        "defaultProfile" : "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
        "disabledProfileSources": [
        "Windows.Terminal.Azure"
    ],
        "initialCols" : 120,
        "initialRows" : 30,
        "keybindings" : 
        [
            {
                "command" : "closePane",
                "keys" : 
                [
                    "ctrl+shift+w"
                ]
            },
            {
                "command" : "copy",
                "keys" : 
                [
                    "ctrl+shift+c"
                ]
            },
            {
                "command" : "duplicateTab",
                "keys" : 
                [
                    "ctrl+shift+d"
                ]
            },
            {
                "command" : "newTab",
                "keys" : 
                [
                    "ctrl+shift+t"
                ]
            },
            {
                "command" : "newTabProfile0",
                "keys" : 
                [
                    "ctrl+shift+1"
                ]
            },
            {
                "command" : "newTabProfile1",
                "keys" : 
                [
                    "ctrl+shift+2"
                ]
            },
            {
                "command" : "newTabProfile2",
                "keys" : 
                [
                    "ctrl+shift+3"
                ]
            },
            {
                "command" : "newTabProfile3",
                "keys" : 
                [
                    "ctrl+shift+4"
                ]
            },
            {
                "command" : "newTabProfile4",
                "keys" : 
                [
                    "ctrl+shift+5"
                ]
            },
            {
                "command" : "newTabProfile5",
                "keys" : 
                [
                    "ctrl+shift+6"
                ]
            },
            {
                "command" : "newTabProfile6",
                "keys" : 
                [
                    "ctrl+shift+7"
                ]
            },
            {
                "command" : "newTabProfile7",
                "keys" : 
                [
                    "ctrl+shift+8"
                ]
            },
            {
                "command" : "newTabProfile8",
                "keys" : 
                [
                    "ctrl+shift+9"
                ]
            },
            {
                "command" : "nextTab",
                "keys" : 
                [
                    "ctrl+tab"
                ]
            },
            {
                "command" : "openSettings",
                "keys" : 
                [
                    "ctrl+,"
                ]
            },
            {
                "command" : "paste",
                "keys" : 
                [
                    "ctrl+shift+v"
                ]
            },
            {
                "command" : "prevTab",
                "keys" : 
                [
                    "ctrl+shift+tab"
                ]
            },
            {
                "command" : "scrollDown",
                "keys" : 
                [
                    "ctrl+shift+down"
                ]
            },
            {
                "command" : "scrollDownPage",
                "keys" : 
                [
                    "ctrl+shift+pgdn"
                ]
            },
            {
                "command" : "scrollUp",
                "keys" : 
                [
                    "ctrl+shift+up"
                ]
            },
            {
                "command" : "scrollUpPage",
                "keys" : 
                [
                    "ctrl+shift+pgup"
                ]
            },
            {
                "command" : "switchToTab0",
                "keys" : 
                [
                    "ctrl+alt+1"
                ]
            },
            {
                "command" : "switchToTab1",
                "keys" : 
                [
                    "ctrl+alt+2"
                ]
            },
            {
                "command" : "switchToTab2",
                "keys" : 
                [
                    "ctrl+alt+3"
                ]
            },
            {
                "command" : "switchToTab3",
                "keys" : 
                [
                    "ctrl+alt+4"
                ]
            },
            {
                "command" : "switchToTab4",
                "keys" : 
                [
                    "ctrl+alt+5"
                ]
            },
            {
                "command" : "switchToTab5",
                "keys" : 
                [
                    "ctrl+alt+6"
                ]
            },
            {
                "command" : "switchToTab6",
                "keys" : 
                [
                    "ctrl+alt+7"
                ]
            },
            {
                "command" : "switchToTab7",
                "keys" : 
                [
                    "ctrl+alt+8"
                ]
            },
            {
                "command" : "switchToTab8",
                "keys" : 
                [
                    "ctrl+alt+9"
                ]
            }
        ],
        "requestedTheme" : "system",
        "showTabsInTitlebar" : true,
        "showTerminalTitleInTitlebar" : true,
        "wordDelimiters" : " ./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}~?\u2502"
    },
    "profiles" : 
    [
        {
            "acrylicOpacity" : 0.75,
            "background" : "#012456",
            "closeOnExit" : true,
            "colorScheme" : "One Half Dark",
            "commandline" : "powershell.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
            "name" : "Windows PowerShell",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "One Half Dark",
            "commandline" : "cmd.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
            "name" : "Command Prompt",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "commandline" : "cmd.exe /c set MSYS=winsymlinks:nativestrict&& set MSYS2_PATH_TYPE=inherit&& msys2 -i -l",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "historySize" : 9001,
            "icon" : "%SCOOP%\\apps\\msys2\\current\\msys2.ico",
            "name" : "MSYS2",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "commandline" : "cmd.exe /c set MSYS=winsymlinks:nativestrict&& set MSYS2_PATH_TYPE=inherit&& mingw64 -i -l",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "historySize" : 9001,
            "icon" : "%SCOOP%\\apps\\msys2\\current\\mingw64.ico",
            "name" : "MinGW64",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {         
            "guid": "{a5a97cb8-8961-5535-816d-772efe0c6a3f}",
            "acrylicOpacity" : 0.75,
            "background" : "#012456",
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "hidden": false,
            "name": "Arch",
            "icon" : "%SCOOP%\\apps\\archwsl\\current\\arch.ico",
            "source": "Windows.Terminal.Wsl",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {        
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "commandline" : "\"%SCOOP%\\apps\\git-with-openssh\\current\\bin\\bash.exe\" -i -l",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "historySize" : 9001,
            "icon" : "%SCOOP%\\apps\\git-with-openssh\\current\\mingw64\\share\\git\\git-for-windows.ico",
            "name" : "Git Bash",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        }
    ],
        {
            "acrylicOpacity" : 0.75,
            "background" : "#012456",
            "closeOnExit" : true,
            "colorScheme" : "One Half Dark",
            "commandline" : "powershell.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
            "backgroundImage" : "ms-appdata:///local/1537295612521.png",
            "backgroundImageOpacity" : 0.75,
            "backgroundImageStrechMode" : "fill",
            "name" : "Windows PowerShell",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "One Half Dark",
            "commandline" : "cmd.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
            "backgroundImage" : "ms-appdata:///local/1503827082075.png",
            "backgroundImageOpacity" : 0.75,
            "backgroundImageStrechMode" : "fill",
            "name" : "Command Prompt",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "commandline" : "cmd.exe /c set MSYS=winsymlinks:nativestrict&& set MSYS2_PATH_TYPE=inherit&& msys2 -i -l",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "historySize" : 9001,
            "icon" : "%SCOOP%\\apps\\msys2\\current\\msys2.ico",
            "backgroundImage" : "ms-appdata:///local/1504637576364.png",
            "backgroundImageOpacity" : 0.75,
            "backgroundImageStrechMode" : "fill",
            "name" : "MSYS2",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "commandline" : "cmd.exe /c set MSYS=winsymlinks:nativestrict&& set MSYS2_PATH_TYPE=inherit&& mingw64 -i -l",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "historySize" : 9001,
            "icon" : "%SCOOP%\\apps\\msys2\\current\\mingw64.ico",
            "backgroundImage" : "ms-appdata:///local/704387.png",
            "backgroundImageOpacity" : 0.75,
            "backgroundImageStrechMode" : "fill",
            "name" : "MinGW64",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {         
            "guid": "{a5a97cb8-8961-5535-816d-772efe0c6a3f}",
            "acrylicOpacity" : 0.75,
            "background" : "#012456",
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "hidden": false,
            "name": "Arch",
            "icon" : "%SCOOP%\\apps\\archwsl\\current\\arch.ico",
            "backgroundImage" : "ms-appdata:///local/1507634976184.jpg",
            "backgroundImageOpacity" : 0.75,
            "backgroundImageStrechMode" : "fill",
            "source": "Windows.Terminal.Wsl",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        },
        {        
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "commandline" : "\"%SCOOP%\\apps\\git-with-openssh\\current\\bin\\bash.exe\" -i -l",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "historySize" : 9001,
            "icon" : "%SCOOP%\\apps\\git-with-openssh\\current\\mingw64\\share\\git\\git-for-windows.ico",
            "backgroundImage" : "ms-appdata:///local/1496315646560.png",
            "backgroundImageOpacity" : 0.75,
            "backgroundImageStrechMode" : "fill",
            "name" : "Git Bash",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        }
    ],
    "schemes" : 
    [
        {
            "background":"#000000",
            "black":"#000000",
            "blue":"#2980b9",
            "brightBlack":"#7f8c8d",
            "brightBlue":"#3498db",
            "brightCyan":"#1abc9c",
            "brightGreen":"#2ecc71",
            "brightPurple":"#9b59b6",
            "brightRed":"#e74c3c",
            "brightWhite":"#ecf0f1",
            "brightYellow":"#f1c40f",
            "cyan":"#16a085",
            "foreground":"#ecf0f1",
            "green":"#27ae60",
            "name":"flat-ui-v1",
            "purple":"#8e44ad",
            "red":"#c0392b",
            "white":"#ecf0f1",
            "yellow":"#f39c12"
        },
        {
            "background" : "#0C0C0C",
            "black" : "#0C0C0C",
            "blue" : "#0037DA",
            "brightBlack" : "#767676",
            "brightBlue" : "#3B78FF",
            "brightCyan" : "#61D6D6",
            "brightGreen" : "#16C60C",
            "brightPurple" : "#B4009E",
            "brightRed" : "#E74856",
            "brightWhite" : "#F2F2F2",
            "brightYellow" : "#F9F1A5",
            "cyan" : "#3A96DD",
            "foreground" : "#CCCCCC",
            "green" : "#13A10E",
            "name" : "Campbell",
            "purple" : "#881798",
            "red" : "#C50F1F",
            "white" : "#CCCCCC",
            "yellow" : "#C19C00"
        },
        {
            "background" : "#000000",
            "black" : "#000000",
            "blue" : "#000080",
            "brightBlack" : "#808080",
            "brightBlue" : "#0000FF",
            "brightCyan" : "#00FFFF",
            "brightGreen" : "#00FF00",
            "brightPurple" : "#FF00FF",
            "brightRed" : "#FF0000",
            "brightWhite" : "#FFFFFF",
            "brightYellow" : "#FFFF00",
            "cyan" : "#008080",
            "foreground" : "#C0C0C0",
            "green" : "#008000",
            "name" : "Vintage",
            "purple" : "#800080",
            "red" : "#800000",
            "white" : "#C0C0C0",
            "yellow" : "#808000"
        },
        {
            "background" : "#282C34",
            "black" : "#282C34",
            "blue" : "#61AFEF",
            "Grey" : "#FFFFFF",
            "darkGrey" : "#FFFFFF",
            "brightBlack" : "#5A6374",
            "brightBlue" : "#61AFEF",
            "brightCyan" : "#56B6C2",
            "brightGreen" : "#98C379",
            "brightPurple" : "#C678DD",
            "brightRed" : "#E06C75",
            "brightWhite" : "#DCDFE4",
            "brightYellow" : "#E5C07B",
            "cyan" : "#56B6C2",
            "foreground" : "#DCDFE4",
            "green" : "#98C379",
            "name" : "One Half Dark",
            "purple" : "#C678DD",
            "red" : "#E06C75",
            "white" : "#DCDFE4",
            "yellow" : "#E5C07B"
        },
        {
            "background" : "#FAFAFA",
            "black" : "#383A42",
            "blue" : "#0184BC",
            "brightBlack" : "#4F525D",
            "brightBlue" : "#61AFEF",
            "brightCyan" : "#56B5C1",
            "brightGreen" : "#98C379",
            "brightPurple" : "#C577DD",
            "brightRed" : "#DF6C75",
            "brightWhite" : "#FFFFFF",
            "brightYellow" : "#E4C07A",
            "cyan" : "#0997B3",
            "foreground" : "#383A42",
            "green" : "#50A14F",
            "name" : "One Half Light",
            "purple" : "#A626A4",
            "red" : "#E45649",
            "white" : "#FAFAFA",
            "yellow" : "#C18301"
        },
        {
            "background" : "#002B36",
            "black" : "#073642",
            "blue" : "#268BD2",
            "brightBlack" : "#002B36",
            "brightBlue" : "#839496",
            "brightCyan" : "#93A1A1",
            "brightGreen" : "#586E75",
            "brightPurple" : "#6C71C4",
            "brightRed" : "#CB4B16",
            "brightWhite" : "#FDF6E3",
            "brightYellow" : "#657B83",
            "cyan" : "#2AA198",
            "foreground" : "#839496",
            "green" : "#859900",
            "name" : "Solarized Dark",
            "purple" : "#D33682",
            "red" : "#DC322F",
            "white" : "#EEE8D5",
            "yellow" : "#B58900"
        },
        {
            "background" : "#FDF6E3",
            "black" : "#073642",
            "blue" : "#268BD2",
            "brightBlack" : "#002B36",
            "brightBlue" : "#839496",
            "brightCyan" : "#93A1A1",
            "brightGreen" : "#586E75",
            "brightPurple" : "#6C71C4",
            "brightRed" : "#CB4B16",
            "brightWhite" : "#FDF6E3",
            "brightYellow" : "#657B83",
            "cyan" : "#2AA198",
            "foreground" : "#657B83",
            "green" : "#859900",
            "name" : "Solarized Light",
            "purple" : "#D33682",
            "red" : "#DC322F",
            "white" : "#EEE8D5",
            "yellow" : "#B58900"
        }
    ]
}

@ Restia666Ashdoll Danke! es hat funktioniert, aber jedes Mal, wenn es ein Popup zeigt:

Capture

@foremtehan Da Sie msys2, mingw64, arch und git bash nicht verwenden, brauchen Sie sie nicht. Versuchen Sie dies nun in Profilen für Ubuntu.

        {         
            "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
            "acrylicOpacity" : 0.75,
            "background" : "#012456",
            "closeOnExit" : true,
            "colorScheme" : "flat-ui-v1",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "hidden": false,
            "name": "Ubuntu",
            "source": "Windows.Terminal.Wsl",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : ".",
            "useAcrylic" : true
        }

Stellen Sie sicher, dass im letzten Profilabschnitt kein Komma steht

Ich habe den gesamten Prozess in eine Bat-Datei automatisiert, die Sie als Administrator ausführen müssen.
Fügen Sie Windows terminal zum Kontextmenü.zip hinzu
Sie müssen das Startverzeichnis in profile.json noch in "startingDiretory" : ".", ändern

Warnung: Es ist ein Tippfehler aufgetreten. Verwenden Sie stattdessen "startingDirectory" : "." .

Das funktioniert super, wenn Sie hier richtig und offen sind ...
Das einzige Problem, das mir aufgefallen ist, ist, dass wenn Sie das Terminal normal öffnen ... das Standardverzeichnis ist system32 ... gibt es eine Möglichkeit, es zu überschreiben und den Benutzerordner zu verwenden, wenn es zufällig normal geöffnet wird?

Hallo! Ich hatte auch dieses Problem. Eine schnelle und schmutzige Lösung besteht darin, Ihrer .bashrc-Datei im WSL-Terminal einen CD-Befehl hinzuzufügen.
echo 'cd ~' >> ~ / .bashrc

Das macht den ganzen Zweck dieses Threads zunichte, da er sich immer im Verzeichnis '~' befindet, unabhängig davon, wo Sie das Terminal öffnen. Geben Sie einfach 'cd ~' ein, nachdem Sie das Terminal in wsl / msys2 / mingw64 / git bash geöffnet haben.

Ich habe den gesamten Prozess in eine Bat-Datei automatisiert, die Sie als Administrator ausführen müssen.
Fügen Sie Windows terminal zum Kontextmenü.zip hinzu
Sie müssen das Startverzeichnis in profile.json noch in "startingDiretory" : ".", ändern

Warnung: Es ist ein Tippfehler aufgetreten. Verwenden Sie stattdessen "startingDirectory" : "." .

Das funktioniert super, wenn Sie hier richtig und offen sind ...
Das einzige Problem, das mir aufgefallen ist, ist, dass wenn Sie das Terminal normal öffnen ... das Standardverzeichnis ist system32 ... gibt es eine Möglichkeit, es zu überschreiben und den Benutzerordner zu verwenden, wenn es zufällig normal geöffnet wird?

Hallo! Ich hatte auch dieses Problem. Eine schnelle und schmutzige Lösung besteht darin, Ihrer .bashrc-Datei im WSL-Terminal einen CD-Befehl hinzuzufügen.
echo 'cd ~' >> ~ / .bashrc

Das macht den ganzen Zweck dieses Threads zunichte, da er sich immer im Verzeichnis '~' befindet, unabhängig davon, wo Sie das Terminal öffnen. Geben Sie einfach 'cd ~' ein, nachdem Sie das Terminal in wsl / msys2 / mingw64 / git bash geöffnet haben.

Dadurch wird auch das Startverzeichnis auf "~" gesetzt, wenn Sie auf "Windows-Terminal hier öffnen" klicken. Sie können einfach eine if-Bedingung hinzufügen.
if [ "$PWD" = "/mnt/c/Windows/System32" ]; then cd ~ fi

@ Restia666Ashdoll und @musm , melden Sie sich ab und wieder an, nachdem Sie die ico-Datei in den LocalAppData-Ordner kopiert haben. Das Symbol wird dann angezeigt.

image

Wie haben Sie die Option "Mit Code öffnen" hinzugefügt?

@ Restia666Ashdoll und @musm , melden Sie sich ab und wieder an, nachdem Sie die ico-Datei in den LocalAppData-Ordner kopiert haben. Das Symbol wird dann angezeigt.
image

Wie haben Sie die Option "Mit Code öffnen" hinzugefügt?

Wenn Sie Code installieren, werden Sie gefragt, ob Sie eine mit Code geöffnete Shell hinzufügen möchten

Für diejenigen, die das Terminal aus dem Windows Store installiert haben, lautet der Befehl:

explorer.exe shell:appsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App

Windows Terminal fügt dem Pfad außerdem wt.exe , wodurch das oben genannte fehleranfällige Snippet überflüssig wird.

Ich begrüße die Arbeit aller hier, aber ich möchte nur eine einfachere Lösung anbieten, die gut genug für mich und vielleicht auch für viele von Ihnen ist:

WICHTIGE VORBEREITUNG: Stellen Sie in Ihrer Windows Terminal-Einstellungsdatei sicher, dass das Profil Ihrer Standard-Shell "startingDirectory": ".", was "Start im aktuellen Arbeitsverzeichnis" bedeutet. (Wenn Sie diesen Schritt überspringen, ignoriert Windows Terminal das Arbeitsverzeichnis und startet immer in Ihrem Home-Verzeichnis.)

Nun zu den Anweisungen:

  1. Navigiere zu einem lustigen Ordner im Explorer!
  2. Drücken Sie Strg-L, geben Sie wt und drücken Sie die Eingabetaste. Das ist es! Getan! Windows Terminal wird in dem Ordner geöffnet, den Sie gerade anzeigen.

Der fettgedruckte Text oben ist die eigentliche Anweisung. Hehe. Das ist es!

Ich brauche keinen Rechtsklick-Menüpunkt. Es ist ziemlich selten, dass ich das Terminal im aktuellen Verzeichnis öffnen muss, und ich kann nur Strg-L, wt , Enter. Es ist super schnell und ez.

@VideoPlayerCode Das ist eine großartige Lösung! Vielen Dank!

@VideoPlayerCode Danke für den tollen Tipp! Der Fall "Als Administrator ausführen" wird jedoch nicht gelöst.

Wenn jemand den folgenden Fehler erhält, nachdem er die Lösung von @yanglr verwendet hat
explorer_error

Sie können den gesamten Pfad anstelle von% LOCALAPPDATA% verwenden:

Also statt
[HKEY_CLASSES_ROOT \ Directory \ Background \ shellwtcommand]
@ = "% LOCALAPPDATA% \ Microsoft \ WindowsApps \ wt.exe"

Verwenden Sie (mit Ihrem Benutzernamen anstelle von 'thull'):
[HKEY_CLASSES_ROOT \ Directory \ Background \ shellwtcommand]
@ = "" C: \ Users \ thullAppData \ Local \ Microsoft \ WindowsAppswt.exe ""

@ ad1tyawagh Schön, dass ich dir geholfen habe! :-)

@lllopo Ich würde gerne helfen, aber es scheint, dass "Als Administrator

Hier ist mein aktuelles Setup:

  • PowerShell ist meine Standard-Shell.
  • Meine PowerShell-Konfiguration enthält die folgenden zusätzlichen Zeilen:
function EditProfile { notepad "$profile" }
function GoAdmin { start-process pwsh –verb runAs }

Wenn Sie GoAdmin eingeben, wird ein Dialogfeld mit Administratorrechten angezeigt, und PowerShell wird als Administrator in einem separaten Shell-Fenster (nicht von Windows Terminal gehostet) in dem Ordner gestartet, in den Sie navigiert wurden. Dies ist praktisch und reicht mir, da ich dies nur für schokoladige Installations- / Update-Pakete verwende. Ich habe für nichts anderes wirklich Administratorrechte benötigt.

Aber für Sie wollte ich versuchen, es zu verbessern, um Windows Terminal selbst mit Administratorrechten starten zu können. Es schlägt jedoch fehl:

# Works but not admin rights:
function GoAdmin { start-process "$env:LOCALAPPDATA\Microsoft\WindowsApps\wt.exe" }

function GoAdmin { start-process explorer.exe shell:appsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App }

# Fails with "This command cannot be run due to the error: The file cannot be accessed by the system.":
function GoAdmin { start-process "$env:LOCALAPPDATA\Microsoft\WindowsApps\wt.exe" -verb runAs }

# Successfully launches explorer.exe as admin, which in turn launches Windows Terminal as non-admin, meh:
function GoAdmin { start-process explorer.exe shell:appsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App -verb runAs }

Wenn es also keine Möglichkeit gibt, den Fehler "Auf die Datei kann vom System nicht zugegriffen werden" zu beheben, gibt es keine Möglichkeit, Windows Terminal als Administrator über PowerShell-Skripts zu starten. Vielleicht findet jemand einen Weg. (Bearbeiten: Die Erklärung für das Fehlschlagen des Starts von wt als Administrator scheint darin zu liegen, dass Windows Terminal als Benutzer ohne Administratorrechte installiert ist und daher vom Administrator nicht gefunden werden kann. Zumindest verstehe ich diese Meldung so . )

Wenn nicht, hoffe ich, dass Ihnen zumindest der hier bereitgestellte Befehl GoAdmin gefällt, mit dem ein separates PowerShell-Fenster als Administrator erfolgreich gestartet wird. Es reicht mir für die Verwaltung von Schokoladenpaketen, daher macht es mir nichts aus, dass es kein Windows Terminal-Fenster ist ... (Es ist auch ziemlich nützlich, dass es kein Windows Terminal verwendet, da dies die "Administratorrechte" bedeutet. Die Shell unterscheidet sich optisch, was eine gute Erinnerung daran ist, sie nicht für die reguläre Arbeit zu verwenden, da Administratorrechte gefährlich sind und sich auf alle Programme übertragen, die Sie über Ihre Shell starten. Sie sollten daher nicht unachtsam verwendet werden.)

PS: Ersetzen Sie pwsh durch powershell wenn Sie die veraltete, integrierte "Windows PowerShell" verwenden. Ich verwende stattdessen PowerShell Core 6 von https://github.com/PowerShell/PowerShell (installiert über choco install powershell-core ).

Ein weiterer Tipp: Ich habe Windows Terminal selbst ganz links in meiner Taskleiste angeheftet. Auf diese Weise kann ich Win + 1 drücken, um es sofort zu starten (oder es fokussieren, wenn es bereits gestartet ist). Sehr angenehm. Wenn ich wirklich möchte, dass Windows Terminal selbst als Administrator ausgeführt wird, kann ich einfach mit der rechten Maustaste auf dieses Taskleistensymbol klicken, dann im angezeigten Menü mit der rechten Maustaste auf "Windows Terminal" und schließlich auf "Als Administrator ausführen" klicken.

Letzter Tipp: Nachdem Sie Ihr Startverzeichnis auf "." Gesetzt haben, wird das Windows-Terminal immer im Ordner system32 geöffnet, wenn Sie es über eine Verknüpfung starten (z. B. über die angeheftete Taskleiste oder über das Startmenü; aber nicht über Win + R oder über den Explorer). die letzteren Methoden funktionieren richtig)). Es gibt jedoch eine schnelle Möglichkeit, zu Ihrem Home-Ordner zu gelangen: Geben Sie einfach cd und drücken Sie die Eingabetaste, um immer direkt nach Hause zu gelangen.

Eine andere Möglichkeit besteht darin, den Befehl sudo von Scoop aus zu installieren
scoop install sudo
http://blog.lukesampson.com/sudo-for-windows
Sie können nicht nur Befehle mit erhöhten Berechtigungen ausführen, sondern auch eine PowerShell- / Eingabeaufforderungssitzung mit erhöhten Rechten mit dem Befehl sudo powershell oder sudo cmd starten.

@ Restia666Ashdoll Wie in meiner Antwort erwähnt, sind keine "sudo" -Befehle von Drittanbietern erforderlich. PowerShell verfügt über ein integriertes "sudo": https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6#examples

Beispiel 5: Starten Sie PowerShell als Administrator

In diesem Beispiel wird PowerShell mithilfe der Option "Als Administrator ausführen" gestartet.

Start-Process -FilePath "powershell" -Verb RunAs

Ich habe das in meinem Beispiel als GoAdmin verpackt. Aber jemand könnte es auch als eine Funktion umschließen, die er "sudo" nennt, und es dazu bringen, einen beliebigen Befehl anzunehmen.

Als Inspiration wollte ich beispielsweise, dass der Befehl touch auf einfache Weise leere 0-Byte-Dateien erstellt, und ich wollte, dass mehrere Argumente für mehrere Dateien gleichzeitig verwendet werden. Also habe ich diese PowerShell-Funktion geschrieben und in meine Konfiguration eingefügt, damit sie immer verfügbar ist:

function touch() { for ($i=0; $i -le $args.length; $i++) { $name = $args[$i]; if ($name -ne $null -and $name.GetType().Name -eq "String") { $name = $name.Trim(); if ($name.length -gt 0) { New-Item -ItemType file "$name" } } } }

Etwas sehr Ähnliches könnte getan werden, wenn Sie einen generischen Befehl sudo erstellen möchten.

Oder verwenden Sie einfach GoAdmin wie oben gezeigt ...

@VideoPlayerCode Dieser Befehl kann nur für wenige Powershell-Befehle verwendet werden. Sie können so etwas wie sudo pip install httpie oder sudo Install-Module oh-my-posh -Force nicht tun. Heck, Sie können sogar Chocolatey von normaler Powershell wie sudo choco install mpv (obwohl ich persönlich Chocolatey nicht mag). Natürlich hat Sudo für Windows auch Einschränkungen.

@ Restia666Ashdoll Danke, du hast mich dazu gedrängt, den "sudo" -Befehl zu schreiben, den ich oben erklärt habe. :-)

function sudo() {
    [string[]]$cmd = @("-command")
    for ($i=0; $i -le $args.length; $i++) {
        $val = $args[$i]
        if ($val -ne $null) {
            $cmd += [string]$val;
        }
    }
    if ($cmd.length -ge 2) {
        $cmd += "; pause"
        #Write-Host $cmd
        Start-Process pwsh -ArgumentList $cmd –Verb RunAs
    }
}

_ (Wenn jemand das reguläre, veraltete powershell , das mit Windows gebündelt ist, ersetzen Sie das pwsh durch powershell oben.) _

Wenn Sie sudo choco install sysinternals in einer Sitzung ohne Administrator ausführen, wird dieser Befehl jetzt in einer Sitzung mit Administrator ausgeführt.

Beachten Sie, dass der Startprozess von PowerShell das Laichen von Admin-Subshells nicht unterstützt, die direkt in "Host" -Shells ohne Administratorrechte ausgegeben werden. Daher wird er in einem Popup-Fenster ausgeführt und pausiert, damit Sie das Ergebnis lesen können, bevor Sie dieses Fenster schließen. Gut genug für mich.

Ich habe mir https://github.com/lukesampson/psutils/blob/master/sudo.ps1 (das von Ihnen vorgeschlagene Skript) angesehen, aber es war ein bisschen schwierig, Kernelfunktionen aufzurufen, um die Ausgabe eines Administrators anzuhängen Unterprozess in das laufende Terminal und Sorge, dass unsichere Berechtigungen in den Host-Prozess "verlaufen Exploits , die möglich werden, wenn die Eingabe / Ausgabe eines Admin-Prozesses einem Nicht-Admin-Prozess gehört (Huch). Es gab auch einen anderen namens wsudo unter https://github.com/noseratio/choco/tree/master/wsudo , aber ich habe mich nicht wirklich eingehend damit befasst. Ich habe stattdessen nur meine eigene Version geschrieben.

Nochmals vielen Dank für den Push. Es ist schön, einen Befehl zum schnellen Ausführen einer einzelnen Aktion als Administrator zu haben. Mein zuvor veröffentlichter Befehl GoAdmin ist immer noch sehr nützlich, um eine separate Administratorkonsole zu starten, die wie gewohnt das Eingeben mehrerer Aktionen unterstützt. Mit diesem neuen Befehl ist es jetzt etwas einfacher, einzelne Befehle auszuführen!

PS: Wenn sich jemand fragt, wo diese oder alle meine anderen Funktionen abgelegt werden sollen, geben Sie einfach Write-Host $Profile (Write-Host ist "Echo" in Powershell), um den Profilpfad anzuzeigen, und erstellen Sie diese Datei, wenn sie fehlt, und dann Fügen Sie die Funktionen dort ein und starten Sie PowerShell neu.

(Diese "Kernel" -Funktionen sind eigentlich die offiziell unterstützten Konsolen-APIs dieses Teams. Sie befinden sich zufällig in einer Bibliothek namens kernel32 (aus alten Gründen.))

@ DHowett-MSFT Ahh. Der sudo.ps1-Code von Luke Sampson sagt DllImport("kernel32.dll") , aber Sie sagen, es ist völlig in Ordnung, diese Funktionen zu verwenden, um die Ausgabe der Admin-Shell auf die aktuelle Shell umzuleiten?

Um ehrlich zu sein, soll es sich auf Unix-Systemen wie Sudo verhalten. Fast jeder, der Scoop verwendet, nutzt das. Ich möchte einen Befehl mit erhöhten Berechtigungen in der aktuellen Shell ausführen. Und es ist das, was sich jeder wünscht, wenn Microsoft ein richtiges "Sudo für Windows" erstellt.

Vielen Dank für die tolle Diskussion zu diesem Thema! Würde es Ihnen etwas ausmachen, die Diskussion über Dinge abzulenken, die anderswo nicht die Kontextmenüoption sind? Für sudo haben wir # 1032

Ja, einige Leute fragten nach einem Weg zum "Sudo" und die Dinge entgleist ein bisschen. ;-);

@ DHowett-MSFT Entschuldigung, dass Sie nicht zum Thema gehören. Es kam gerade wegen der Aussicht, Terminal als Admin zu starten. Ich werde aufhören.

Hey, kein Problem! Passiert allen. :Lächeln:

Hier ist meine Lösung
Es verhält sich ähnlich wie PowerShell 7 und kann auch mit Administratorrechten ausgeführt werden
https://github.com/nt4f04uNd/wt-contextmenu
Dort finden Sie eine Anleitung zur Implementierung und alle benötigten Dateien

@ nt4f04uNd Können Sie Ihrem Reiseführer auch scoop install nicrmd hinzufügen?
https://github.com/ScoopInstaller/Main/blob/master/bucket/nircmd.json

@ Restia666Ashdoll fertig

Ich sehe hier keine Notwendigkeit für eine offene cmd-Eingabeaufforderung.

Klicken Sie in der Adressleiste darauf, geben Sie wt.exe ein und drücken Sie die Eingabetaste. Windows Terminal im mit dem aktuellen Erkundungsfenster als CWD.

@ em00k Verschiedene Leute haben ihre eigenen Workflows, und das ist in Ordnung: smile:

Dies ist Arbeit für mich https://github.com/microsoft/terminal/issues/1060#issuecomment -497539461. Um das ursprüngliche Verzeichnis für meinen Benutzerordner aufzulösen, erstelle ich eine Verknüpfung mit dem Ziel "% USERPROFILE%" und füge ihn ein mein Startmenü und Taskleiste.

Dies ist jedoch sehr nützlich, wenn wir einen Ordnerparameter verwenden können, um das Verzeichnis in der App wt.exe zu öffnen.

image

Hier ist, was für mich für 0.7.3451.0 funktioniert hat (Einige Änderungen am ursprünglichen Kommentar von @yanglr erforderlich)

1) Laden Sie das offizielle Windows Terminal-Symbol herunter und platzieren Sie es irgendwo
https://raw.githubusercontent.com/microsoft/terminal/master/res/terminal.ico

2) Bearbeiten Sie die Windows Terminal-Konfiguration. Erstellen Sie das Profil, mit dem Sie das aktuelle Verzeichnis standardmäßig öffnen möchten.
Hinzufügen
"startingDirectory": "."
zu diesem Profil, so dass das aktuelle Verzeichnis das Startverzeichnis ist

3) Erstellen Sie eine Datei wt.reg und führen Sie sie aus. Ersetzen Sie dabei Elemente in geschweiften Klammern durch echte Pfade (wobei Sie sich an doppelte Schrägstriche erinnern).

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows Terminal Here"
"Icon"="{full_path_to_icon}\\terminal.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\{windows_user_directory}\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

(Ersetzen Sie HKEY_CURRENT_USER durch HKEY_CLASSES_ROOT, wenn Sie nur den aktuellen Benutzer ändern möchten.)

4) Test. Es sollte das Verzeichnis öffnen, in dem Sie sich befinden, wenn Sie mit der rechten Maustaste klicken.
Ich habe dies nur mit cmd.exe als Standardprofil getestet. Ich weiß nicht, ob es für andere Profiltypen funktioniert.

Capture

Öffnet ein Windows-Terminal ab dem Ordner, in den ich mit der rechten Maustaste geklickt habe

Capture

Ändern Sie es zumindest in HKCU, sodass Sie nur Ihr eigenes Benutzerkonto ändern

Ich habe mir diese Lösung ausgedacht:
https://github.com/yangshuairocks/Open_in_Windows_Terminal

@ VideoPlayerCode

@yangshuairocks Mine blinkt nicht nur einmal, sondern zweimal, und fordert dann zur Verwaltung auf.

Ich möchte "Als neue Registerkarte in Windows Terminal öffnen".
Ich möchte meinen Desktop nicht mit vielen Terminalfenstern durcheinander bringen.

PS
"startingDirectory": "." macht $PWD des Terminals über das Startmenü oder die Taskleiste C:\Windows\System32 geöffnet.

Einfache Lösung aus allen hier gegebenen Kommentaren: https://github.com/plexcellmedia/open-microsoft-terminal-in-current-directory

Eigentlich müssen Sie keinen vollständigen Pfad schreiben. Terminal ist in der Variablen PATH vorhanden. Rufen Sie einfach irgendwo den Befehl wt .
Oder Sie können die UWP-App selbst shell:AppsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App aufrufen

Seit der Veröffentlichung von v0.9.433.0 können Sie jetzt Befehlszeilenparameter übergeben, sodass im Folgenden mehrere Profile unterstützt werden.

wt.reg :

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\wt (Command)]
@="Open Terminal (Command)"
[HKEY_CLASSES_ROOT\Directory\shell\wt (Command)\command]
@="C:\\Users\\Sean\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe new-tab -d \"%1\" -p Command"

[HKEY_CLASSES_ROOT\Directory\shell\wt (PowerShell)]
@="Open Terminal (PowerShell)"
[HKEY_CLASSES_ROOT\Directory\shell\wt (PowerShell)\command]
@="C:\\Users\\Sean\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe new-tab -d \"%1\" -p PowerShell"

[HKEY_CLASSES_ROOT\Directory\shell\wt (Git Bash)]
@="Open Terminal (Git Bash)"
[HKEY_CLASSES_ROOT\Directory\shell\wt (Git Bash)\command]
@="C:\\Users\\Sean\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe new-tab -d \"%1\" -p \"Git Bash\""

[HKEY_CLASSES_ROOT\Directory\shell\wt (Ubuntu Bash)]
@="Open Terminal (Ubuntu Bash)"
[HKEY_CLASSES_ROOT\Directory\shell\wt (Ubuntu Bash)\command]
@="C:\\Users\\Sean\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe new-tab -d \"%1\" -p \"Ubuntu Bash\""

[HKEY_CLASSES_ROOT\Directory\shell\wt (Ubuntu Zsh)]
@="Open Terminal (Ubuntu Zsh)"
[HKEY_CLASSES_ROOT\Directory\shell\wt (Ubuntu Zsh)\command]
@="C:\\Users\\Sean\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe new-tab -d \"%1\" -p \"Ubuntu Zsh\""

profiles.json :

{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "defaultProfile": "{e5beb15e-da5c-4df7-815c-b0b0a865ef3f}",
    "initialRows": 50,
    "tabWidthMode": "titleLength",

    "profiles": {
        "defaults": {
            "cursorShape": "filledBox",
            "experimental.retroTerminalEffect": false,
            "fontFace": "Fira Code",
            "fontSize": 10,
            "padding": "2, 2, 2, 2",
            "suppressApplicationTitle": true
        },
        "list": [
            {
                "backgroundImage": "ms-appdata:///local/ubuntu.png",
                "backgroundImageAlignment": "bottomRight",
                "backgroundImageOpacity": 0.25,
                "backgroundImageStretchMode": "none",
                "commandline": "wsl.exe -d Ubuntu-18.04 --exec zsh --login",
                "colorScheme": "Solarized Dark",
                "guid": "{e5beb15e-da5c-4df7-815c-b0b0a865ef3f}",
                "icon": "ms-appdata:///local/ubuntu.png",
                "name": "Ubuntu Zsh",
                "startingDirectory": "//wsl$/Ubuntu-18.04/home/sean",
                "tabTitle": "Zsh"
            },
            {
                "backgroundImage": "ms-appdata:///local/ubuntu.png",
                "backgroundImageAlignment": "bottomRight",
                "backgroundImageOpacity": 0.25,
                "backgroundImageStretchMode": "none",
                "commandline": "wsl.exe -d Ubuntu-18.04 --exec bash --login",
                "colorScheme": "Solarized Dark",
                "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
                "icon": "ms-appdata:///local/ubuntu.png",
                "name": "Ubuntu Bash",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "//wsl$/Ubuntu-18.04/home/sean",
                "tabTitle": "Bash"
            },
            {
                "backgroundImage": "ms-appdata:///local/git-for-windows.png",
                "backgroundImageAlignment": "bottomRight",
                "backgroundImageOpacity": 0.25,
                "backgroundImageStretchMode": "none",
                "commandline": "C:\\Program Files\\Git\\bin\\bash.exe --login",
                "colorScheme": "Solarized Dark",
                "guid": "{78ccd05e-83d4-46c6-9a80-8865ff8ff720}",
                "icon" : "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico",
                "name": "Git Bash",
                "startingDirectory": "%USERPROFILE%",
                "tabTitle": "Bash"
            },
            {
                "backgroundImage": "ms-appdata:///local/powershell.png",
                "backgroundImageAlignment": "bottomRight",
                "backgroundImageOpacity": 0.25,
                "backgroundImageStretchMode": "none",
                "commandline": "powershell.exe",
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "PowerShell",
                "tabTitle": "PS"
            },
            {
                "commandline": "cmd.exe",
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "Command",
                "tabTitle": "Cmd"
            },
            {
                "acrylicOpacity": 0.9,
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "name": "Azure Shell",
                "source": "Windows.Terminal.Azure",
                "tabTitle": "Bash",
                "useAcrylic": true
            },
            {
                "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
                "hidden": false,
                "name": "PowerShell Core",
                "source": "Windows.Terminal.PowershellCore"
            }
        ]
    },

    "schemes": [],

    "keybindings": []
}

@DHowett es gibt nur noch ein Problem ... es verwendet keine vorhandene wt-Instanz wieder und öffnet einen neuen Tab.

@gitfool und das wird von # 4472 verfolgt: smile:

Sie können es leicht robuster machen, indem Sie %1\. anstelle von nur %1 . Wenn Sie es jetzt im Stammverzeichnis eines Laufwerks öffnen, wird es nicht das tun, was Sie erwarten . Das ist # 4571

Ich weiß nicht warum, aber %V , funktioniert es zum Beispiel

C:\Users\islevin\AppData\Local\Microsoft\WindowsApps\wt -p "cmd" -d "%V"

Tolle Arbeit Jungs, das ist fast perfekt für mich :)

Die Kontextmenüeinträge sind großartig, sie öffnen den erwarteten Ordner, großartig. Ich starte Windows Terminal jedoch direkt (z. B. über das Startmenü). Das Startverzeichnis ist mein Windows-Basisordner.

Gibt es überhaupt eine Möglichkeit, diese Standardeinstellung auf meinen WSL-Basisordner zu setzen, ohne den Kontextmenüeintrag zu unterbrechen?

@rfgamaral siehe meine profile.json oben. Bei einem Standardwert von startingDirectory im Profil wird dieser vom Explorer-Kontextmenü überschrieben, andernfalls wird der Standardwert wie angegeben angegeben. Sie müssen nur meine Linux-Distribution und meinen Benutzernamen durch Ihren ersetzen.

@gitfool Das habe ich, aber es funktioniert nicht für mich:

{
  "guid": "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
  "name": "Debian (WSL)",
  "commandline": "wsl.exe -d Debian --exec zsh --login",
  "startingDirectory": "//wsl$/Debian/home/ricardo",
  "acrylicOpacity": 1.0,
  "colorScheme": "Flat UI (tweaked)",
  "fontSize": 10,
  "hidden": false,
  "padding": "3, 2",
  "useAcrylic": true
}

@rfgamaral Ich kann nichts falsch mit Ihrer Konfiguration sehen. Existiert Ihr WSL-Ausgangsverzeichnis oder verwenden Sie ein anderes Profil, wenn Sie Terminal direkt starten?

Ja tut es:

image

Nein, ich habe nur dieses WSL-Profil.

@rfgamaral Das Linux-Dateisystem unterscheidet zwischen Groß- und Kleinschreibung, daher sollte Ihr Profil startingDirectory //wsl$/Debian/home/Ricardo .

@rfgamaral Das Linux-Dateisystem unterscheidet zwischen Groß- und Kleinschreibung, daher sollte Ihr Profil startingDirectory //wsl$/Debian/home/Ricardo .

Genial, das hat es behoben! Ich danke dir sehr :)

Vielleicht liegt dies außerhalb des Geltungsbereichs dieses Problems, oder vielleicht auch nicht, ich werde es trotzdem fragen ... Unter der Annahme des oben von @gitfool beschriebenen C:\Users\Ricardo\Workspace und dann einen Symlink innerhalb der WSL wie ~/ Workspace -> /c/Users/AmaralR/Workspace/ .

Wie cool wäre es, wenn Sie mit der rechten Maustaste auf den Ordner Workspace im Explorer klicken und ~/Workspace anstelle von /c/Users/AmaralR/Workspace/ öffnen würden? Glaubt ihr, dass dies sogar aus der Ferne möglich ist?

Es gibt ein Problem für mich. Der Rick-Klick-Befehl wird nur angezeigt, wenn ich mit der rechten Maustaste auf Ordner klicke. Wenn ich jedoch mit der rechten Maustaste auf einen leeren Bereich in einem Ordner klicke, wird der Terminaleintrag nicht angezeigt (siehe gif), obwohl VS Code und meine Standard-WSL-Distribution (Pengwin) angezeigt werden. Ich habe Terminal, VS Code und Pengwin auf Extended Shell-Modus eingestellt (Shift gedrückt halten).

GIF

Meine aktuelle Konfiguration:
`` `Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ shellwt]
@ = "Terminal hier öffnen
"Extended" = ""
"Icon" = "D: \ OneDrive \ _Apps \ .config \ .icons \ terminal.ico"

[HKEY_CLASSES_ROOT \ Directory \ shellwtcommand]
@ = "C: \ Benutzer \ steve \ AppData \ Local \ Microsoft \ WindowsApps \ wt.exe new-tab -d"% 1 "-p" Pengwin "" `` `

@Kalaschnik Sie benötigen außerdem einen Eintrag in HKCR \ Directory \ Background \ Shell \ WindowsTerminalHere

Siehe https://github.com/shanselman/WindowsTerminalHere/pull/3/files

Alle oben genannten Weisheiten zusammenfassen:
https://gist.github.com/Kalaschnik/faea6d77494d2e095ab992a58ba94562

Wenn ich das versuche, um eine cmd-Registerkarte im Terminal zu starten, bekomme ich

[Fehler 0x8007010b beim Starten von "cmd.exe"]

Es gibt ein Problem für mich. Der Rick-Klick-Befehl wird nur angezeigt, wenn ich mit der rechten Maustaste auf Ordner klicke.

Ich bin nicht sicher, was das Problem ist, das das verursacht, aber Sie können dieses Repository überprüfen, um es leistungsfähiger zu machen

Gif demo

Hallo zusammen,
Ich implementiere ein einfaches Skript, um ein Kontextmenü hinzuzufügen.
Es funktioniert für mich mit Windows Terminal Version 0.9.433.0

Vielen Dank an @ nt4f04uNd und andere, die mich alle inspiriert haben

Repo: Windows-Terminal-Kontextmenü

Hallo zusammen,
Ich implementiere ein einfaches Skript, um ein Kontextmenü hinzuzufügen.
Es funktioniert für mich mit Windows Terminal Version 0.9.433.0

Vielen Dank an @ nt4f04uNd und andere, die mich alle inspiriert haben

Repo: Windows-Terminal-Kontextmenü

Das ist wirklich toll !!! jedoch wenige Anmerkungen:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7
Sie müssen Set-ExecutionPolicy auf Unrestricted setzen, um es auszuführen.

Auch das scheint kaputt zu sein:

Copy-Item : The filename, directory name, or volume label syntax is incorrect.
At D:\Jeff\Documents\Windows-terminal-context-menu\SetupContextMenu.ps1:25 char:1
+ Copy-Item -Path "$PSScriptRoot\icons\*.ico" -Destination $resourcePat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

this dir needs to be created either prior to or as part of the execution:
$env:LOCALAPPDATA\WindowsTerminalContextIcons\

Außerdem heißt es:

PS D:\Jeff\Documents\Windows-terminal-context-menu> .\SetupContextMenu.ps1
Add top layer menu (shell) => Registry::HKEY_CLASSES_ROOT\Directory\shell\WindowsTerminal
Add top layer menu (background) => Registry::HKEY_CLASSES_ROOT\Directory\shell\WindowsTerminal
Add new entry Git Bash
Add new entry Command Prompt
Add new entry PowerShell
Add new entry Azure Cloud Shell

aber es wird nicht richtig erstellt (die fehlenden Symbole und mein Git Bash fehlen, weil ich den versteckten Schlüssel nicht darin habe):
image

Dies wurde unter globalen Definitionen hinzugefügt:
$gitbashIcoFileName = "git-bash.ico"

und dies nach Zeile 101:

        elseif ($commandLine -like "*Git*bash.exe*") {
            $icoPath = $gitbashIcoFileName
        }

Sieht so aus, als würde es einfach nicht gefallen, die Symbole zu laden von:
% LOCALAPPDATA% \ WindowsTerminalContextIcons \
... weil es im Registrierungsschlüssel gut aussieht.

Stattdessen habe ich diese Zeile geändert in:
$resourcePath = "$PSScriptRoot\icons\"

und entfernt:
Copy-Item -Path "$PSScriptRoot\icons\*.ico" -Destination $resourcePath

Das Problem ist, dass wenn der Ordner nicht existiert, die Symbole nicht kopiert werden können. Fügen Sie einfach mkdir $resourcePath bevor das Copy-Item dieses Bit löst. Ich habe dafür ein Problem in Ihrem Repo erstellt. Außerdem scheint es in einigen Szenarien ein Problem mit der Profilanalyse zu geben. Trotzdem danke für das Drehbuch!

Hallo @Nomelas

Danke für Ihre Antwort.
Ich habe das Problem behoben, dass das Symbol fehlt. Installieren Sie es einfach erneut und melden Sie sich erneut an.
Ich ziehe es nicht vor, $ resourcePath auf den Speicherort des Skripts zu setzen. Weil der Benutzer den Installationsordner aus irgendeinem Grund entfernen kann und das Symbol dann wieder fehlt.

Zweitens, könnten Sie Ihr Git-Bash-Profil teilen? Weil ich nicht Git-Bash auf meinem WT eingestellt bin.
Ich brauche ein Muster, um die Regel festzulegen.

Hallo @Nomelas

Danke für Ihre Antwort.
Ich habe das Problem behoben, dass das Symbol fehlt. Installieren Sie es einfach erneut und melden Sie sich erneut an.
Ich ziehe es nicht vor, $ resourcePath auf den Speicherort des Skripts zu setzen. Weil der Benutzer den Installationsordner aus irgendeinem Grund entfernen kann und das Symbol dann wieder fehlt.

Zweitens, könnten Sie Ihr Git-Bash-Profil teilen? Weil ich nicht Git-Bash auf meinem WT eingestellt bin.
Ich brauche ein Muster, um die Regel festzulegen.

Ich habe alle Probleme behoben und reiche eine PR ein

@Nomelas , leider funktioniert es bei mir nicht. Ich habe die Datei config.json bearbeitet und das ps-Skript ausgeführt. Nach dem Klicken auf das Symbol (keine Shell-Ordner) erhalte ich:
This file does not have a program associated with it for performing this action. Please install an app or, if one is already installed, create an association in the Default Apps Settings page.

Das ist der Registrierungsblock:
image

Leute, ich weiß, dass ich ein bisschen zu spät zu dieser Party komme, aber wie wäre es mit

Führen Sie PowerShell mit erhöhten Berechtigungen aus und geben Sie Folgendes ein:

Install-Module OpenHere
Set-OpenHereShortcut -ShortcutType:WindowsTerminal

👍 wer mag das!

@ nt4f04uNd Vielleicht sollten Sie zuerst die Dokumentation lesen, insbesondere Hinweise

Ich könnte es verpasst haben, aber Einstellungen Startverzeichnis auf "." öffnet das Installationsverzeichnis des Windows-Terminals beim Öffnen über das Startmenü und öffnet hier das Kontextmenü wird in dem Verzeichnis geöffnet, in dem Sie sich befinden. Wenn Sie "% USERPROFILE%" verwenden, wird es nur in meinem Benutzerverzeichnis in beide Richtungen geöffnet.

Gibt es eine Möglichkeit, das Öffnen hier zum Laufen zu bringen und beim Öffnen über das Startmenü immer noch "% USERPROFILE%" als Standardpfad zu verwenden? hier öffnen funktioniert nicht mit "% USERPROFILE%".

@eskoONE und andere, ja, das ist es!
Es gibt eine Lösung mit dem Argument -d. Überprüfen Sie https://github.com/nt4f04und/wt-contextmenu

Leute, ich weiß, dass ich ein bisschen zu spät zu dieser Party komme, aber wie wäre es mit

Führen Sie PowerShell mit erhöhten Berechtigungen aus und geben Sie Folgendes ein:

Install-Module OpenHere
Set-OpenHereShortcut -ShortcutType:WindowsTerminal

👍 wer mag das!

Es klappt!! Vielen Dank!

Es ist viel einfacher, einem Ordner-Kontextmenü einen einzelnen Befehl hinzuzufügen. Es ist nur ein einfacher Registrierungsschlüssel.

Zum Beispiel (und dann können Sie auch ein Symbol usw. hinzufügen)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Open Thing Here\command]
@="C:\\thing.exe \"%1\""

Wie kann ich eine Option hinzufügen, um diese thing.exe nur zu öffnen, wenn ich die UMSCHALTTASTE drücke - wie bei der Option "PowerShell Window"?

Leute, ich weiß, dass ich ein bisschen zu spät zu dieser Party komme, aber wie wäre es mit

Führen Sie PowerShell mit erhöhten Berechtigungen aus und geben Sie Folgendes ein:

Install-Module OpenHere
Set-OpenHereShortcut -ShortcutType:WindowsTerminal

👍 wer mag das!

Wie kann ich es entfernen?

Leute, ich weiß, dass ich ein bisschen zu spät zu dieser Party komme, aber wie wäre es mit
Führen Sie PowerShell mit erhöhten Berechtigungen aus und geben Sie Folgendes ein:

Install-Module OpenHere
Set-OpenHereShortcut -ShortcutType:WindowsTerminal

👍 wer mag das!

Wie kann ich es entfernen?

Aus der Dokumentation :
Remove-OpenHereShortcut -ShortcutType:WindowsTerminal

Hallo zusammen,
Ich implementiere ein einfaches Skript, um ein Kontextmenü hinzuzufügen.
Es funktioniert für mich mit Windows Terminal Version 0.9.433.0
Vielen Dank an @ nt4f04uNd und andere, die mich alle inspiriert haben
Repo: Windows-Terminal-Kontextmenü

Das ist wirklich toll !!! jedoch wenige Anmerkungen:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7
Sie müssen Set-ExecutionPolicy auf Unrestricted setzen, um es auszuführen.

Auch das scheint kaputt zu sein:

Copy-Item : The filename, directory name, or volume label syntax is incorrect.
At D:\Jeff\Documents\Windows-terminal-context-menu\SetupContextMenu.ps1:25 char:1
+ Copy-Item -Path "$PSScriptRoot\icons\*.ico" -Destination $resourcePat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

this dir needs to be created either prior to or as part of the execution:
$env:LOCALAPPDATA\WindowsTerminalContextIcons\

Außerdem heißt es:

PS D:\Jeff\Documents\Windows-terminal-context-menu> .\SetupContextMenu.ps1
Add top layer menu (shell) => Registry::HKEY_CLASSES_ROOT\Directory\shell\WindowsTerminal
Add top layer menu (background) => Registry::HKEY_CLASSES_ROOT\Directory\shell\WindowsTerminal
Add new entry Git Bash
Add new entry Command Prompt
Add new entry PowerShell
Add new entry Azure Cloud Shell

aber es wird nicht richtig erstellt (die fehlenden Symbole und mein Git Bash fehlen, weil ich den versteckten Schlüssel nicht darin habe):
image

Dieses Skript hat einige Fehler, da es für eine alte Version von Windows Terminal erstellt wurde. Ich habe eine Abzweigung erstellt, um diese Fehler zu beheben

https://github.com/KiritoDv/Windows-terminal-context-menu

image

Hallo @KiritoDv
Können Sie überprüfen, wie Ihre Windows-Terminalversion aussieht?
Ich verwende die neueste Version v0.9.433.0 und installiere erfolgreich.

Danke ~

Ich habe die neueste Version, aber wenn ich meine Profildatei aktualisiere, sind sie mit der alten Profilversion identisch. Entschuldigung, zumindest funktioniert die Änderung für jemanden mit demselben Fehler

Kuddos Kirito für das Drehbuch, es ist wirklich schön. Gibt es eine Chance, dass WT dies in Zukunft unterstützt?

@RonaldOlsthoorn Es gibt sicherlich eine Chance - daher ist diese Ausgabe noch offen 😄

Wenn jemand herausfinden könnte, wie diese Kontextmenüeinträge aus einer gepackten Anwendung installiert werden und die Einträge dynamisch aktualisieren können (um die Liste der Profile wiederzugeben), wären wir sicherlich daran interessiert, eine PR zu überprüfen. Bis dahin ist dies der Fall nur auf unserem Rückstand.

Vielleicht könnten die Leute, die es für Pengwin getan haben, es auch für Terminal tun (oder zumindest beraten, was sie getan haben, um es zum Laufen zu bringen).

Hallo zusammen,
Ich implementiere ein einfaches Skript, um ein Kontextmenü hinzuzufügen.
Es funktioniert für mich mit Windows Terminal Version 0.9.433.0
Vielen Dank an @ nt4f04uNd und andere, die mich alle inspiriert haben
Repo: Windows-Terminal-Kontextmenü

Das ist wirklich toll !!! jedoch wenige Anmerkungen:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7
Sie müssen Set-ExecutionPolicy auf Unrestricted setzen, um es auszuführen.
Auch das scheint kaputt zu sein:

Copy-Item : The filename, directory name, or volume label syntax is incorrect.
At D:\Jeff\Documents\Windows-terminal-context-menu\SetupContextMenu.ps1:25 char:1
+ Copy-Item -Path "$PSScriptRoot\icons\*.ico" -Destination $resourcePat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

this dir needs to be created either prior to or as part of the execution:
$env:LOCALAPPDATA\WindowsTerminalContextIcons\

Außerdem heißt es:

PS D:\Jeff\Documents\Windows-terminal-context-menu> .\SetupContextMenu.ps1
Add top layer menu (shell) => Registry::HKEY_CLASSES_ROOT\Directory\shell\WindowsTerminal
Add top layer menu (background) => Registry::HKEY_CLASSES_ROOT\Directory\shell\WindowsTerminal
Add new entry Git Bash
Add new entry Command Prompt
Add new entry PowerShell
Add new entry Azure Cloud Shell

aber es wird nicht richtig erstellt (die fehlenden Symbole und mein Git Bash fehlen, weil ich den versteckten Schlüssel nicht darin habe):
image

Dieses Skript hat einige Fehler, da es für eine alte Version von Windows Terminal erstellt wurde. Ich habe eine Abzweigung erstellt, um diese Fehler zu beheben

https://github.com/KiritoDv/Windows-terminal-context-menu

image

Ein großes Lob an Sie für die Erstellung des Drehbuchs, funktioniert wie ein Zauber.

Implementierungshinweis: Das PowerToys-App-Manifest zeigt, wie Sie die Kontextmenüs des Datei-Explorers für Dateien und Ordner deklarieren. Ich bin mir nicht sicher, ob dies eine gleichzeitige Registrierung des COM-Servers erfordern würde ...

Beachten Sie die Überlappung mit # 2189 - scheint jedoch eher parallel als komplementär zu sein.

<Extensions>
        ...
        <com:Extension Category="windows.comServer">
          <com:ComServer>
            <com:ExeServer Executable="modules\PowerRenameUWPUI.exe" DisplayName="PowerRenameUWPUI">
              <com:Class Id="0440049F-D1DC-4E46-B27B-98393D79486B"/>
            </com:ExeServer>
          </com:ComServer>
        </com:Extension>
        <desktop4:Extension Category="windows.fileExplorerContextMenus">
          <desktop4:FileExplorerContextMenus>
            <desktop4:ItemType Type="*">
              <desktop4:Verb Id="FilePowerRename" Clsid="0440049F-D1DC-4E46-B27B-98393D79486B" />
            </desktop4:ItemType>
            <desktop5:ItemType Type="Directory">
              <desktop5:Verb Id="DirectoryPowerRename" Clsid="0440049F-D1DC-4E46-B27B-98393D79486B" />
            </desktop5:ItemType>
          </desktop4:FileExplorerContextMenus>
        </desktop4:Extension>

Ich habe den Quellcode nicht verfolgt.
Ich bin mir nicht sicher, wie die Rückruffunktion von profiles.json modifiziert ist.

Meins hat funktioniert, nachdem ich viel Zeit damit verbracht hatte, die Kommentare der Leute zu lesen

Schritte zum Hinzufügen von "Windows-Terminal hier" zum Kontextmenü mit der rechten Maustaste:
1) Laden Sie das Windows-Terminal aus dem Microsoft Store herunter

2) Unter https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/icons/wt_32.ico
Download-Symbol mit Dateiname wt_32.ico

3) Öffnen Sie Ihr CMD und führen Sie diesen Befehl mkdir "%USERPROFILE%\AppData\Local\terminal"

4) Kopieren Sie das Windows-Terminalsymbol (das Sie in Schritt 2 heruntergeladen haben) in den Ordner C: \ Users [Ihr Benutzername] AppData \ Local \ terminal
(Beispiel für mein zu kopierendes Symbol: C: \ Users \ DellAppData \ Local \ terminal)

5) Öffnen Sie das Notpad und schreiben Sie den folgenden Code

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"=C:\\Users\\[your-user-name]\\AppData\\Local\\terminal\\wt_32.ico

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\[your-user-name]\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

6) Hinweis:
Schreiben Sie in [Ihr-Benutzername] Ihren Benutzernamen.
Zum Beispiel ist mein Benutzername Dell, meine Pfade werden sein

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"=C:\\Users\\DELL\\AppData\\Local\\terminal\\wt_32.ico

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\DELL\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

Speichern Sie die Datei als wt.reg auf Ihrem Desktop (oder irgendwo auf Ihrem PC) und öffnen Sie sie
(drücken Sie OK alle)
7) Testen Sie es mit der rechten Maustaste => Windows-Terminal hier auswählen
[Windows-Terminal (Vorschau) wird geöffnet] 👍

Es funktioniert immer noch nicht, wenn das Kontextmenü Laufwerken im Datei-Explorer hinzugefügt wird. Es öffnet WT für eine Sekunde und schließt es dann. Gibt es Hinweise, wie dieses spezielle Problem behoben werden kann?

@ 4k3or3et Ich bin mir nicht sicher, worauf Sie sich beziehen, aber die Arbeit von @ atif-dev und anderen wie @ zadjii-msft ist ziemlich redundant, da es ein Windows PowerShell-Modul gibt , das dies vollständig abdeckt, einschließlich Rollback und Anpassung.

@ 4k3or3et Ich bin mir nicht sicher, worauf Sie sich beziehen, aber die Arbeit von @ atif-dev und anderen wie @ zadjii-msft ist ziemlich redundant, da es ein Windows PowerShell-Modul gibt , das dies vollständig abdeckt, einschließlich Rollback und Anpassung.

Ähnlich wie Sie Kontextmenüelemente in HKEY_CLASSES_ROOT\Direcroty\shell hinzufügen, können Sie sie auch in HKEY_CLASSES_ROOT\Drive\shell hinzufügen. Sie erhalten dann Kontextmenüelemente, wenn Sie im Datei-Explorer mit der rechten Maustaste auf Laufwerke klicken.

Das Problem ist, dass beim Hinzufügen von "C:\Users\PROFILE\AppData\Local\Microsoft\WindowsApps\wt.exe -d "%V" -p "Debian" was bei Ordnern funktioniert, dies nicht für Laufwerke im Datei-Explorer gilt. WT öffnet dann für eine Sekunde und schließt aus irgendeinem Grund.

Meine Frage ist, ob jemand herausgefunden hat, warum Windows Terminal im Falle eines Laufwerks nicht mit "% V" umgehen kann.

Vielen Dank.

Die Verknüpfung sollte %V\.

Die Verknüpfung sollte %V\.

Oh Mann! Das ist fantastisch!!!

Dies funktioniert für Laufwerke und Ordner ...

Würdest du so nett sein und mir die "Wissenschaft" hinter "% V" erklären? Wie unterscheidet es sich von regulären "% V"?

Das ist also eines dieser "seltsamen Probleme". "%V" am Laufwerksstamm wird auf "C:\" . Die meisten Parser für Befehlsargumente behandeln \" als " , da \ das "Escape" -Zeichen ist. Daher wird der Pfad von "C:\" in C:" (Löschen des ersten Zitats und Konsumieren des zweiten).

Durch die Verwendung von "%V\." wird der Laufwerksstamm auf "C:\\." , was völlig legal ist.

Das ist also eines dieser "seltsamen Probleme". "%V" am Laufwerksstamm wird auf "C:\" . Die meisten Parser für Befehlsargumente behandeln \" als " , da \ das "Escape" -Zeichen ist. Daher wird der Pfad von "C:\" in C:" (Löschen des ersten Zitats und Konsumieren des zweiten).

Durch die Verwendung von "%V\." wird der Laufwerksstamm auf "C:\\." , was völlig legal ist.

Verstanden. Danke nochmal für deine Hilfe.

Ich habe es über den Store installiert, aber Windows sagt mir "Anwendung nicht gefunden", wenn ich wt.exe als Befehl in den Registrierungsschlüssel eingebe. Wenn ich den vollständigen Pfad ändere, dh %LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe , wird der Fehler "Zugriff nicht möglich" angezeigt (nicht die richtigen Rechte für dieses Element).

Derzeit habe ich den Befehl als cmd.exe /C start wt.exe hinzugefügt, und dies funktioniert, obwohl die alte cmd-Eingabeaufforderung beim Öffnen von wt auf dem Bildschirm blinkt.

Ich habe es über den Store installiert, aber Windows sagt mir "Anwendung nicht gefunden", wenn ich wt.exe als Befehl in den Registrierungsschlüssel eingebe. Wenn ich den vollständigen Pfad ändere, dh %LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe , wird der Fehler "Zugriff nicht möglich" angezeigt (nicht die richtigen Rechte für dieses Element).

Derzeit habe ich den Befehl als cmd.exe /C start wt.exe hinzugefügt, und dies funktioniert, obwohl die alte cmd-Eingabeaufforderung beim Öffnen von wt auf dem Bildschirm blinkt.

Ändern Sie durch regedit% LOCALAPPDATA% die reale Adresse wie "C: \ Users \ [user] AppData \ Local".

und dann habe ich dieses "startingDirectory": "%__CD__%" zu profile.json hinzugefügt

Ich habe es über den Store installiert, aber Windows sagt mir "Anwendung nicht gefunden", wenn ich wt.exe als Befehl in den Registrierungsschlüssel eingebe. Wenn ich den vollständigen Pfad ändere, dh %LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe , wird der Fehler "Zugriff nicht möglich" angezeigt (nicht die richtigen Rechte für dieses Element).
Derzeit habe ich den Befehl als cmd.exe /C start wt.exe hinzugefügt, und dies funktioniert, obwohl die alte cmd-Eingabeaufforderung beim Öffnen von wt auf dem Bildschirm blinkt.

Ändern Sie durch regedit% LOCALAPPDATA% die reale Adresse wie "C: \ Users [user] AppData \ Local".

und dann habe ich dieses "startingDirectory": "%__CD__%" zu profile.json hinzugefügt

Vielen Dank, es scheint tatsächlich der richtige Ansatz zu sein, bei dem der erweiterte Pfad anstelle von %LOCALAPPDATA% . Ich verwende "startingDirectory": "." , was auch wie erwartet funktioniert.

@ Wosser1sProductions verwendet einfach dieses cmd.exe /s /k pushd "%V" anstelle des anderen Befehls.

Der Punkt ist, das neue Windows-Terminal (die ausführbare Datei wt.exe ) über das Kontextmenü zu öffnen. Der Standardwert zum Öffnen der regulären Eingabeaufforderung ist in der Tat cmd.exe /s /k pushd "%V" .

Hier ist eine Lösung.

Das Schlechte an der Registrierungsdatei ist, dass Sie den Pfad eines bestimmten Benutzer-WT (da UWP pro Benutzer installiert wird) in einem HKEY_CLASSES_ROOT-Kontext hinzufügen müssen. Ich habe versucht, es durch HKEY_CURRENT_USER zu ersetzen, aber es funktioniert nicht für mich.

Wenn es eine Möglichkeit gibt, WT systemweit in einem "globalen" Ordner zu installieren, ist dies eine bessere Vorgehensweise

Lassen Sie mich meine Registrierungsdatei hier hinzufügen, damit jeder andere sie verwenden kann:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows Terminal Here"
"Icon"="E:\\Resimler\\ico\\terminal.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="D:\\WindowsApps\\Microsoft.WindowsTerminal_0.10.781.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe"

Das erste @ ist Text, der im Kontextmenü angezeigt wird (_ "Windows Terminal Here" _)
"Symbol" ist der Symbolpfad, der auch im Kontextmenü angezeigt wird.
Das zweite @ ist der Exe-Pfad des Terminals. Sie müssen herausfinden, wo es ist.

Passen Sie diesen Code an, fügen Sie ihn in eine txt-Datei ein und benennen Sie ihn in _wt.reg_ um. Dann lass es laufen.

Öffnen Sie dann Ihr neues Windows-Terminal. Gehe zu den Einstellungen:
image

Hier sind wir in der profile.json
Fügen Sie diese Codes ein:


{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "profiles":
    {
        "defaults":
        {
        },
        "list":
        [
            {
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "cmd",
                "commandline": "cmd.exe",
                "hidden": false,
                "startingDirectory": "."
            },
            {
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            },
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl"
            }
        ]
    },
    "schemes": [],
    "keybindings": []
}


Das ist es

Hier ist mein Registrierungsskript, das die Befehlszeilenargumente verwendet. Ich habe es für CMD-, Powershell- und WSL-Ubuntu-Standardprofilnamen konfiguriert, sowohl mit normalen als auch mit Admin-Eingabeaufforderungen. Im Gegensatz zu den meisten Skripten, die ich in dieser Ausgabe gesehen habe, sind keine Änderungen an der Datei profile.json erforderlich
https://gist.github.com/OmegaRogue/9069405e7b0bf5e76f1c5d9c96f8b663

Keine dieser Optionen ist etwas, mit dem ich total zufrieden wäre. Also habe ich einen Stich gemacht.

Ich habe die Lösung von

image

Leider kann ich nicht herausfinden, wie die Admin-Befehle auf die gleiche Ebene gelangen. Das habe ich:
image

Hier ist meine .reg-Datei
Ich habe einige Kommentare hinterlassen, um herauszufinden, welche Abschnitte was tun, damit möglicherweise jemand helfen kann, die Verschachtelung des Administrators zu beheben.

Keine dieser Optionen ist etwas, mit dem ich total zufrieden wäre. Also habe ich einen Stich gemacht.

Ich habe die Lösung von

image

Leider kann ich nicht herausfinden, wie die Admin-Befehle auf die gleiche Ebene gelangen. Das habe ich:
image

Hier ist meine .reg-Datei
Ich habe einige Kommentare hinterlassen, um herauszufinden, welche Abschnitte was tun, damit möglicherweise jemand helfen kann, die Verschachtelung des Administrators zu beheben.

Ich kann meine Datei ändern, um dies zu tun und die Verschachtelung von Administratoren zu entfernen

@OmegaRogue Nizza, aber ich denke, das Hauptmenüsymbol wird mit einer Version sterben (und so WindowsTerminal.exe Pfadänderung). Vielleicht wäre es besser, es durch ein allgemein zugängliches Symbol zu ersetzen.

Bearbeiten: Auch wenn Sie es schaffen, Admin-Optionen (von @ t-makaro) ohne das Verschachtelungsproblem hinzuzufügen, wäre das großartig.

Komisch , wie @OmegaRogue @ t-makaro @sundowatch und andere ein Rad neu erfinden.

Diese reg -Dateien weisen immer wieder dieselben Fehler auf. Ihnen fehlen das Rollback oder die Tests. Sie arbeiten nicht an Pfaden mit Nicht-ASCII-Zeichen wie ě š č ř í é ý é ů oder Sie müssen die Einstellungen Ihres Terminals ändern.

Schauen Sie stattdessen

Komisch , wie @OmegaRogue @ t-makaro @sundowatch und andere ein Rad neu erfinden.

Diese reg -Dateien weisen immer wieder dieselben Fehler auf. Ihnen fehlen das Rollback oder die Tests. Sie arbeiten nicht an Pfaden mit Nicht-ASCII-Zeichen wie ě š č ř í é ý é ů oder Sie müssen die Einstellungen Ihres Terminals ändern.

Schauen Sie stattdessen

Ich kenne das Problem und die Version, die ich verwende, hat es nicht. Ich habe diese Version nur zur besseren Lesbarkeit veröffentlicht. Meine Version verwendet hex (2) -codierten Text anstelle einer normalen Zeichenfolge

Die Leute vergessen dann den Nebeneffekt, wenn Sie "startingDirectory": "." hinzufügen, um mit der Registrierungsbearbeitung zu arbeiten, die einen Rechtsklick zum Öffnen im aktuellen Ordner hinzufügt. Wenn Sie das Terminal jetzt nur über das Startmenü öffnen, wird es geöffnet System32-Verzeichnis

Die Leute vergessen dann den Nebeneffekt, wenn Sie "startingDirectory": "." hinzufügen, um mit der Registrierungsbearbeitung zu arbeiten, die einen Rechtsklick zum Öffnen im aktuellen Ordner hinzufügt. Wenn Sie das Terminal jetzt nur über das Startmenü öffnen, wird es geöffnet System32-Verzeichnis

Aus diesem Grund braucht mein Skript das nicht

Keine dieser Optionen ist etwas, mit dem ich total zufrieden wäre. Also habe ich einen Stich gemacht.

Ich habe die Lösung von

image

Leider kann ich nicht herausfinden, wie die Admin-Befehle auf die gleiche Ebene gelangen. Das habe ich:
image

Hier ist meine .reg-Datei
Ich habe einige Kommentare hinterlassen, um herauszufinden, welche Abschnitte was tun, damit möglicherweise jemand helfen kann, die Verschachtelung des Administrators zu beheben.

Ich habe eine Version meines Registrierungsskripts zum Kern hinzugefügt, die keine Verschachtelung hat:
https://gist.github.com/OmegaRogue/9069405e7b0bf5e76f1c5d9c96f8b663#file -directory_prompts_windowsterminal_nonnested-reg

Machte dies:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows Terminal here"
"Icon"="C:\\Program Files\\WindowsApps\\Microsoft.WindowsTerminal_0.10.781.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\<user>\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d %V"

[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Windows Terminal here"
"Icon"="C:\\Program Files\\WindowsApps\\Microsoft.WindowsTerminal_0.10.781.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe"

[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="C:\\Users\\<user>\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d %V"
  • Führ es aus

Machte dies:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows Terminal here"
"Icon"="C:\\Users\\<user>\\AppData\\Local\\Terminal\\terminal.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\<user>\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d ."

[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Windows Terminal here"
"Icon"="C:\\Users\\<user>\\AppData\\Local\\Terminal\\terminal.ico"

[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="C:\\Users\\<user>\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d ."
  • Führ es aus

Sie müssen das Symbol nicht herunterladen, sondern können einfach den Pfad der ausführbaren Datei als Symbolpfad verwenden, wie ich es in meinem Registrierungsskript getan habe

Nun, wir müssen die Registrierungsdatei jedes Mal bearbeiten, wenn das Windows-Terminal aktualisiert wird. Es ist besser, die Symboldatei an einem anderen Ort zu speichern

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows Terminal here"
"Icon"="C:\\Program Files\\WindowsApps\\Microsoft.WindowsTerminal_0.11.1121.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\user\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d ."

[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Windows Terminal here"
"Icon"="C:\\Program Files\\WindowsApps\\Microsoft.WindowsTerminal_0.11.1121.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe"

[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="C:\\Users\\user\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d ."

Ich habe festgestellt, dass das Klicken mit der rechten Maustaste auf einen Ordner und das Starten des Terminals nicht ordnungsgemäß funktioniert. Es wird im Containerordner geöffnet.
Kam zu einer Lösung, indem wt.exe -d . durch wt.exe -d "%V" im Registrierungsskript ersetzt wurde. So macht es VS Code.

Hier ist das feste Registrierungsskript, das ich verwendet habe (kein Symbol)

Bearbeiten: % V hinzugefügt. wie vorgeschlagen, und klicken Sie mit der rechten Maustaste auf ein Laufwerk.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Open Windows Terminal here"
[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="C:\\Users\\user\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d \"%V.\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Open Windows Terminal here"
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\user\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d \"%V.\""

[HKEY_CLASSES_ROOT\Drive\shell\wt]
@="Open Windows Terminal here"
[HKEY_CLASSES_ROOT\Drive\shell\wt\command]
@="C:\\Users\\user\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d \"%V.\""

Diese Lösung hat super funktioniert, danke.

@BealeStBluesBoy und @ megapro17 Vielen Dank für Ihre
Ich habe festgestellt, dass wt.exe -d \"%V\" mit dem ausgewählten Ordner korrekt geöffnet wird, aber nicht funktioniert, wenn Sie sich im Stammverzeichnis eines Laufwerks befinden. Beispiel für c: oder d: . Es öffnet das Terminal aber mit dem Fehlercode 0x8007010b
Wenn Sie ein Laufwerk auswählen und diesen Befehl ausführen, wird ein weiterer Fehler angezeigt und das Terminal wird nicht einmal geöffnet.

Mit wt.exe -d . das Terminal jedoch problemlos öffnen, egal wo Sie sich befinden. Der Nachteil ist, dass nur das Verzeichnis geöffnet wird, in dem Sie sich gerade befinden, und nicht das Verzeichnis, das Sie ausgewählt haben. Wenn Sie ein Laufwerk direkt auswählen, wird es nur im Ordner c:\windows\system32 geöffnet.

Ich bleibe bei wt.exe -d . da immer ein verwendbares Terminal geöffnet wird.

BEARBEITEN:
Wie @ DHowett-MSFT unten vorgeschlagen hat, gibt es eine andere Option wt.exe -d \"%V\.\" . Dies verbessert das Verhalten und macht ein Terminal geöffnet, selbst wenn Sie sich im Stammverzeichnis eines Laufwerks befinden. Eine Sache, die mit dieser Lösung immer noch nicht funktioniert, ist die Auswahl eines Laufwerks. Dies führt immer noch zu einem Fehler.

Offtopic: Diese Ausgabe ist viel zu groß, um jeden einzelnen Kommentar zu lesen :) Entschuldigen Sie die doppelte Veröffentlichung einer Ausgabe.

Versuchen Sie "%V\." , wie in diesem Thread mehrmals vorgeschlagen.

Wie fügt man auch als Administrator einen Lauf hinzu?

Können wir über das Terminal zum Administrator wechseln?

Können wir über das Terminal zum Administrator wechseln?

Derzeit nicht mit Vanilla Windows Terminal. Vielleicht WT v2.0, siehe # 5000. Es gibt jedoch eine Problemumgehung: Sie können gsudo verwenden, ein Open-Source-Sudo für Windows.
https://github.com/gerardog/gsudo

Da ich der Autor bin, fühle ich mich verpflichtet zu warnen, dass es technisch möglich ist, dass eine speziell gestaltete Malware möglicherweise Tastenanschläge an die sudo'ed-Konsole sendet und die UAC-Isolation überspringt / und Berechtigungen eskaliert.

Apropos cmd-Weg, es gibt bereits einen cmd-Befehl namens runas der nach dem Passwort fragt (ähnlich wie sudo ).
https://en.wikipedia.org/wiki/Runas

Können wir über das Terminal zum Administrator wechseln?

Derzeit nicht mit Vanilla Windows Terminal. Mayve WT v2.0, siehe # 5000. Es gibt jedoch eine Problemumgehung: Sie können gsudo verwenden, ein Open-Source-Sudo für Windows.
https://github.com/gerardog/gsudo

Da ich der Autor bin, fühle ich mich verpflichtet zu warnen, dass es technisch möglich ist, dass eine speziell gestaltete Malware möglicherweise Tastenanschläge an die sudo'ed-Konsole sendet und die UAC-Isolation überspringt / und Berechtigungen eskaliert.

Was ist, wenn wir über einen Sicherheitsmechanismus nach unerwünschtem Zugriff suchen? Funktioniert das? GSudo ist ein guter Start.

@BealeStBluesBoy und @ megapro17 Vielen Dank für Ihre
Ich habe festgestellt, dass wt.exe -d \"%V\" mit dem ausgewählten Ordner korrekt geöffnet wird, aber nicht funktioniert, wenn Sie sich im Stammverzeichnis eines Laufwerks befinden. Beispiel für c: oder d: . Es öffnet das Terminal aber mit dem Fehlercode 0x8007010b
Wenn Sie ein Laufwerk auswählen und diesen Befehl ausführen, wird ein weiterer Fehler angezeigt und das Terminal wird nicht einmal geöffnet.

Mit wt.exe -d . das Terminal jedoch problemlos öffnen, egal wo Sie sich befinden. Der Nachteil ist, dass nur das Verzeichnis geöffnet wird, in dem Sie sich gerade befinden, und nicht das Verzeichnis, das Sie ausgewählt haben. Wenn Sie ein Laufwerk direkt auswählen, wird es nur im Ordner c:\windows\system32 geöffnet.

Ich bleibe bei wt.exe -d . da immer ein verwendbares Terminal geöffnet wird.

BEARBEITEN:
Wie @ DHowett-MSFT unten vorgeschlagen hat, gibt es eine andere Option wt.exe -d \"%V\.\" . Dies verbessert das Verhalten und macht ein Terminal geöffnet, selbst wenn Sie sich im Stammverzeichnis eines Laufwerks befinden. Eine Sache, die mit dieser Lösung immer noch nicht funktioniert, ist die Auswahl eines Laufwerks. Dies führt immer noch zu einem Fehler.

Offtopic: Diese Ausgabe ist viel zu groß, um jeden einzelnen Kommentar zu lesen :) Entschuldigen Sie die doppelte Veröffentlichung einer Ausgabe.

@brainfoolong Es gibt andere Probleme als nur das Stammverzeichnis eines Laufwerks, aber ich habe all diese Probleme hier gelöst. ✌

Wie fügt man auch als Administrator einen Lauf hinzu?

@aminya Ich habe die https://superuser.com/questions/462174/winr-runs-as-administrator-in-windows-8 geantwortet hat
Wenn Sie sich nicht um Sicherheitsprobleme oder mögliche Nebenwirkungen kümmern, wird Windows Terminal nach diesem Vorgang standardmäßig als Administrator ausgeführt, sodass nach Verwendung des obigen Registrierungsskripts keine weiteren Einstellungen erforderlich sind.

Ich habe das Problem endlich behoben 🚀. Füge das einfach zusammen.

Dies hat die Admin-Schaltfläche ohne Sicherheitsprobleme.

Generische Reg-Datei

(Wenn Sie nicht über PowerShellCore verfügen, ist dies langsamer):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="PowerShell -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\"\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt_admin]
@="Open Windows Terminal Here as Admin"
"Icon"="cmd.exe"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt_admin\command]
@="PowerShell -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\" -Verb RunAs\""

[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="PowerShell -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\"\""


[HKEY_CLASSES_ROOT\Directory\shell\wt_admin]
@="Open Windows Terminal Here as Admin"
"Icon"="cmd.exe"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\wt_admin\command]
@="PowerShell -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\" -Verb RunAs\""

Schnellere Registrierungsdatei

(Wenn Sie PowerShellCore haben)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="pwsh -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\"\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt_admin]
@="Open Windows Terminal Here as Admin"
"Icon"="cmd.exe"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt_admin\command]
@="pwsh -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\" -Verb RunAs\""

[HKEY_CLASSES_ROOT\Directory\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\shell\wt\command]
@="pwsh -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\"\""


[HKEY_CLASSES_ROOT\Directory\shell\wt_admin]
@="Open Windows Terminal Here as Admin"
"Icon"="cmd.exe"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\wt_admin\command]
@="pwsh -windowstyle hidden -Command \"Start-Process wt.exe -ArgumentList \\\"-d\\\",\\\"%V.\\\" -Verb RunAs\""

Sie können das Symbol von hier herunterladen und seinen Download-Pfad (Escape \ ) durch cmd.exe ersetzen:
https://raw.githubusercontent.com/microsoft/terminal/master/res/terminal.ico

@aminya Admin-Modus funktioniert bei mir überhaupt nicht. -windowstyle hidden scheint ebenfalls ignoriert zu werden

@aminya Admin-Modus funktioniert bei mir überhaupt nicht.

Möglicherweise müssen Sie explorer.exe neu starten

-windowstyle hidden scheint ebenfalls ignoriert zu werden

Es zeigt die Fenster für einen Moment.

Einige der Admin-Skripte funktionieren bei mir nicht, ich bin mir nicht sicher warum, aber ich habe festgestellt, dass git bash (wovon der vscode viele open with vs code Einstiegspunkte zu haben scheint Registrierung) wird in mehr Menüs angezeigt als einige der angebotenen Lösungen, daher habe ich eine vereinfachte Version von
Dies verwendet "%USERPROFILE%\AppData\Local\Microsoft\WindowsApps\wt.exe" "-d" "." als Befehl, wie vorgeschlagen
https://gist.github.com/YoraiLevi/283532872b26b93e562b04812821db25

Windows Registry Editor Version 5.00

;drive
[HKEY_CLASSES_ROOT\Drive\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Drive\shell\wt\command]
@=hex(2):22,00,25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,00,4c,00,\
  6f,00,63,00,61,00,6c,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,\
  00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,\
  73,00,5c,00,77,00,74,00,2e,00,65,00,78,00,65,00,22,00,20,00,22,00,2d,00,64,\
  00,22,00,20,00,22,00,2e,00,22,00,00,00
;end drive


;background 1
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\wt\command]
@=hex(2):22,00,25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,00,4c,00,\
  6f,00,63,00,61,00,6c,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,\
  00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,\
  73,00,5c,00,77,00,74,00,2e,00,65,00,78,00,65,00,22,00,20,00,22,00,2d,00,64,\
  00,22,00,20,00,22,00,2e,00,22,00,00,00
;end background 1

;libary folders, like what git does
[HKEY_CLASSES_ROOT\LibraryFolder\Background\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\LibraryFolder\Background\shell\wt\command]
@=hex(2):22,00,25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,00,4c,00,\
  6f,00,63,00,61,00,6c,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,\
  00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,\
  73,00,5c,00,77,00,74,00,2e,00,65,00,78,00,65,00,22,00,20,00,22,00,2d,00,64,\
  00,22,00,20,00,22,00,2e,00,22,00,00,00
;end library folders 

;background 2
[HKEY_CLASSES_ROOT\Directory\background\shell\wt]
@="Open Windows Terminal Here"
"Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\background\shell\wt\command]
@=hex(2):22,00,25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,5c,00,4c,00,\
  6f,00,63,00,61,00,6c,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,\
  00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,\
  73,00,5c,00,77,00,74,00,2e,00,65,00,78,00,65,00,22,00,20,00,22,00,2d,00,64,\
  00,22,00,20,00,22,00,2e,00,22,00,00,00
;end background 2

Ich habe gerade zwei PowerShell-Skripte zum Installieren / Deinstallieren der Kontextmenüelemente erstellt und sie auf GitHub unter freigegeben

https://github.com/lextm/windowsterminal-shell

Die Logik ähnelt der von @ nerdio01 vorgeschlagenen, das

image

Mit install.ps1 und uninstall.ps1 müssen Sie keine Registrierungsschlüsseldateien mehr importieren und sich fragen, wie Sie sie löschen können, wenn Sie nicht möchten.

Pull-Anfragen sind willkommen.

Ein bisschen ärgerlich, dass sich das Symbol in einem versionierten Pfad befindet. Gibt es eine bessere Möglichkeit, darauf zu verweisen, als nur mein Symbol zu versenden?

Aus meiner Sicht ist es keine ideale Lösung, die Registrierung manuell bearbeiten zu müssen. Ein Teil der Verkaufsargumente dieses Projekts ist, dass es verschiedene Arten von Shells unterstützt (pwsh, cmd, ubuntu, was auch immer) und diese Liste von Benutzer zu Benutzer variieren kann. Ein festes Registrierungsskript schneidet es nicht.
Man muss auch daran denken, die an der Registrierung vorgenommenen Änderungen bei der Deinstallation von Windows Terminal manuell zu entfernen.

Gibt es ein bestimmtes Design / eine technische Überlegung / eine Einschränkung, die verhindern würde, dass diese Funktion in Windows Terminal selbst integriert wird? Oder geht es eher um Arbeitskräfte, Prioritäten und Zeit?

Arbeitskräfte, Prioritäten und Zeit

Auf jeden Fall das. Wenn ich die gesamte technische Zeit hätte, würde ich eine tatsächliche Shell-Erweiterung anbieten, die Ihre Profile erkennt und in einem Menü anzeigt, und Sie können Shells in bereits laufenden Instanzen von Terminal erzeugen.

Nachdem ich darüber nachgedacht habe, denke ich, dass es einen einfacheren Weg gibt, dies zu erreichen. Was wäre, wenn es nur einen einzigen statischen Eintrag im Kontextmenü gäbe, der beim Klicken das Windows-Terminal öffnen würde, in dem sie aufgefordert werden, ein Profil auszuwählen.

Dies würde die Notwendigkeit beseitigen, einen dynamischen Satz von Registrierungsschlüsseln zu verwalten. Stellen Sie sicher, dass die Einstellungsdatei nicht bei jedem Rechtsklick analysiert und auf Profiländerungen überprüft werden muss.

Ich habe mich nicht mit der Codebasis dieses Projekts vertraut gemacht, daher kann ich nicht sicher sagen, ob dies den Arbeitsaufwand für die Implementierung verringern würde. Aber ich würde gerne Ihre Gedanken dazu hören.

Geben Sie einfach wt in die Adressleiste im Windows Explorer in einen beliebigen Ordner ein und drücken Sie die Eingabetaste

Wenn jemand @ llevo3 versucht hat, wt in die Adressleiste des Explorers einzugeben, wie Sie es mit cmd tun würden, funktioniert dies nicht für Sie.

Stellen Sie dann sicher, dass Folgendes in Ihrer Umgebungsvariablen PATH enthalten ist
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps

Geben Sie einfach wt in die Adressleiste im Windows Explorer in einen beliebigen Ordner ein und drücken Sie die Eingabetaste

@ llevo3 Dadurch wird das Windows-Terminal im aktuellen Verzeichnis nicht geöffnet. Vielmehr wird es mit dem Standardverzeichnis geöffnet.

@abdulghanitech Dieses äußerst spezifische Problem wurde in diesem Thread nicht weniger als 30 Mal diskutiert. 😄

Geben Sie einfach wt in die Adressleiste im Windows Explorer in einen beliebigen Ordner ein und drücken Sie die Eingabetaste

@ llevo3 Dadurch wird das Windows-Terminal im aktuellen Verzeichnis nicht geöffnet. Vielmehr wird es mit dem Standardverzeichnis geöffnet.

Wenn Sie das aktuelle Verzeichnis öffnen möchten, verwenden Sie einfach die Option -d vor der Adresse
Ex
wt -d [path you want to go]

Zur Verdeutlichung können Sie das aktuelle Verzeichnis öffnen, indem Sie wt -d . eingeben

F: Gibt es nach dem Öffnen des Terminals mit wt -d . eine Möglichkeit, denselben Pfad für neue Terminalinstanzen (Registerkarte / Bereich) zu verwenden?

Vielen Dank an alle, die eine Lösung und verschiedene Ansätze zur korrekten Anwendung kommentiert haben. Ich habe es mit Konsole 2 zum Laufen gebracht. Mit dem "Hier öffnen" mit der Flagge -d . funktionierte Präfekt.

Entschuldigung, wie kann ich das beheben?

image

Alter, komm nicht zu einem nicht verwandten Thema, um eine Frage zu stellen. Reichen Sie einen neuen Fehler ein und das Team kann ihn sich ansehen 😄

@miniksa @ zadjii-msft @ DHowett-MSFT @factormystic @ChrisGuzak

Ich habe das Problem jetzt gelöst, es könnte geschlossen werden. Vielen Dank an alle, die an dieser Diskussion beteiligt waren.

Schritt 0:

Testen Sie, ob zwei der folgenden Konstanten gut funktionieren. Diese werden in den folgenden anderen Schritten verwendet.

echo %USERPROFILE%

echo %LOCALAPPDATA%

Wenn hier alles gut funktioniert, können diese beiden Konstanten direkt in den folgenden Schritten verwendet werden.

Oder führen Sie die folgenden Ersetzungen in den folgenden Schritten durch:

% USERPROFILE% → C:\Users\[userName]
% LOCALAPPDATA% → C:\Users\[userName]\AppData\Local

Hier steht [userName] für Ihren Benutzernamen. Mein Name ist zum Beispiel Bruce .

Schritt 1:
Laufen Sie unter Sachen in CMD :

mkdir "%USERPROFILE%\AppData\Local\terminal"

image

Schritt 2:
Kopieren Sie das Windows-Terminalsymbol in den Ordner %USERPROFILE%\AppData\Local\terminal . Das Symbol finden Sie unter https://github.com/yanglr/WindowsDevTools/tree/master/awosomeTerminal/icons mit dem Dateinamen wt_32.ico .

Schritt 3:
Speichern Sie den folgenden Inhalt als wt.reg und führen Sie ihn als Administrator aus.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt_32.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"

Zu beachten ist, wenn die exe selbst nach Bauordnung erhalten wtd.exe , müssen Sie die oben ändern wt.exe bis wtd.exe in der obigen Registrierung.

Schritt 4:
Prüfung
image

Ich hatte ein Problem mit dieser Lösung, einige Berechtigungsprobleme, wenn es jemandem helfen kann
ersetzen
@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"
mit
@="C:\\Users\\YOURUSERNAME\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe -d ."

Nach meinem Verständnis müssen prozentual codierte Umgebungsvariablen den erweiterbaren Zeichenfolgentyp ( REG_EXPAND_SZ ) verwenden, um korrekt interpretiert zu werden. Aus diesem Grund glaube ich, dass einige der anderen Lösungen nicht vollständig funktionieren 1 . Ich habe das folgende Registrierungsskript erstellt, das erweiterbare Zeichenfolgen verwendet, damit Sie den Benutzernamen nicht ändern müssen. Wahrscheinlich möchten Sie jedoch den Symbolpfad

Ich habe auch eine Aktion / Option zum Öffnen als Administrator hinzugefügt.

Windows Registry Editor Version 5.00

;Binary data is just UTF16 (LE) split every 2 bytes with a comma
;Conversion done with https://onlineutf8tools.com/convert-utf8-to-utf16?hex=true&little-endian=true&space=false&chain=split-string%253Fsplit-by-length%253Dtrue%2526separator%253D%252C

;User action
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminal]
@="Open Terminal here"
;"Icon"="%USERPROFILE%\Pictures\Icons\terminal.ico" (Location to ICO or comment out to hide icon)
"Icon"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,50,00,69,00,63,00,74,00,75,00,72,00,65,00,73,00,5c,00,49,00,63,00,6f,00,6e,00,73,00,5c,00,74,00,65,00,72,00,6d,00,69,00,6e,00,61,00,6c,00,2e,00,69,00,63,00,6f,00

;User action command
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminal\command]
;@="%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe -d ."
@=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,73,00,5c,00,77,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,64,00,20,00,2e,00

;Admin action
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminalAdmin]
@="Open Terminal here (Admin)"
;Show the UAC shield on the action
"HasLUAShield"=""
;"Icon"="%USERPROFILE%\Pictures\Icons\terminal.ico" (Location to ICO or comment out to hide icon)
"Icon"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,50,00,69,00,63,00,74,00,75,00,72,00,65,00,73,00,5c,00,49,00,63,00,6f,00,6e,00,73,00,5c,00,74,00,65,00,72,00,6d,00,69,00,6e,00,61,00,6c,00,2e,00,69,00,63,00,6f,00

;Admin action command
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminalAdmin\command]
@="PowerShell -WindowStyle Hidden -Command \"Start-Process wt -ArgumentList '-d','.' -Verb runAs\""
  1. https://superuser.com/a/599025

Nach meinem Verständnis müssen prozentual codierte Umgebungsvariablen den erweiterbaren Zeichenfolgentyp ( REG_EXPAND_SZ ) verwenden, um korrekt interpretiert zu werden. Aus diesem Grund glaube ich, dass einige der anderen Lösungen nicht ordnungsgemäß funktionieren1. Ich habe das folgende Registrierungsskript erstellt, das erweiterbare Zeichenfolgen verwendet, damit Sie den Benutzernamen nicht ändern müssen. Wahrscheinlich möchten Sie jedoch den Symbolpfad

Ich habe auch eine Aktion / Option zum Öffnen als Administrator hinzugefügt.

Windows Registry Editor Version 5.00

;Binary data is just UTF16 (LE) split every 2 bytes with a comma
;Conversion done with https://onlineutf8tools.com/convert-utf8-to-utf16?hex=true&little-endian=true&space=false&chain=split-string%253Fsplit-by-length%253Dtrue%2526separator%253D%252C

;User action
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminal]
@="Open Terminal here"
;"Icon"="%USERPROFILE%\Pictures\Icons\terminal.ico" (Location to ICO or comment out to hide icon)
"Icon"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,50,00,69,00,63,00,74,00,75,00,72,00,65,00,73,00,5c,00,49,00,63,00,6f,00,6e,00,73,00,5c,00,74,00,65,00,72,00,6d,00,69,00,6e,00,61,00,6c,00,2e,00,69,00,63,00,6f,00

;User action command
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminal\command]
;@="%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe -d ."
@=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,41,00,70,00,70,00,73,00,5c,00,77,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,64,00,20,00,2e,00

;Admin action
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminalAdmin]
@="Open Terminal here (Admin)"
;Show the UAC shield on the action
"HasLUAShield"=""
;"Icon"="%USERPROFILE%\Pictures\Icons\terminal.ico" (Location to ICO or comment out to hide icon)
"Icon"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,50,00,69,00,63,00,74,00,75,00,72,00,65,00,73,00,5c,00,49,00,63,00,6f,00,6e,00,73,00,5c,00,74,00,65,00,72,00,6d,00,69,00,6e,00,61,00,6c,00,2e,00,69,00,63,00,6f,00

;Admin action command
[HKEY_CLASSES_ROOT\Directory\Background\shell\WindowsTerminalAdmin\command]
@="PowerShell -WindowStyle Hidden -Command \"Start-Process wt -ArgumentList '-d','.' -Verb runAs\""
  1. https://superuser.com/a/599025

Hey, danke dafür, ich habe dies nicht verwendet, da es beim Start auf erhöhte Weise ein Windows PowerShell-Fenster öffnet. Ich musste mich jedoch eingehender damit befassen und habe mein eigenes Repository mit einem einfachen Installationsskript für erstellt Alle anderen, die Kontextmenüeinträge für Windows Terminal wünschen.

Für zukünftige Leser dieses langen Threads

  • Microsoft hat beschlossen, eigene Windows Explorer-Kontextmenüelemente aufzunehmen. Deshalb wurde dieses Problem geschlossen. Aufgrund des Veröffentlichungszyklus wird dies jedoch in einigen Wochen (oder Monaten) nicht auf Ihrem Computer (über Microsoft Store für Windows 10) landen. Bisher entwickelten sie eine einfache Shell-Erweiterung mit einigen Kernfunktionen.
  • Wenn Sie in diesem Moment wirklich Kontextmenüs benötigen, müssen Sie solche Menüelemente mithilfe einer der Methoden in diesem langen Thread selbst hinzufügen. Zusammenfassen,

    • Registrierungsschlüssel importieren.
    • Verwenden Sie einige Batch-Dateien. ( so )
    • Verwenden Sie einige PowerShell-Skripts. ( so )

Was auch immer Sie wählen, melden Sie Probleme den Eigentümern dieses Repos, damit sie sie beheben können.

  • Aufgrund des Veröffentlichungszyklus wird dies jedoch in einigen Wochen (oder Monaten) nicht auf Ihrem Computer (über Microsoft Store für Windows 10) landen.

Oh, es wird definitiv früher als Monate sein 😉

: tada: Dieses Problem wurde in # 6100 Windows Terminal Preview v1.1.1671.0 .: tada:

Praktische Links:

Sollte der Link Store Download zur Windows-Terminalvorschau (https://www.microsoft.com/store/apps/9n8g5rfz9xk3?cid=storebadge&ocid=badge) führen? 🤔

@DHowett oh nein, wir müssen den Bot aktualisieren

Scheint, als würde ich mein Batch-Skript vorerst noch verwenden, da das Vanilla-Skript keine erhöhte Option enthält. Ich bin mir sicher, dass die Vanilla-Version mit der Zeit mehr Optionen und / oder Funktionen erhalten wird, ein großes Dankeschön an den Typen Wer hat die Pull-Anfrage eingereicht?

Huh, wir müssen den Bot unbedingt aktualisieren. Lol.

Entschuldigen Sie die Off-Topic-Meldung, aber wenn Sie sowohl die Release-Version als auch die Vorschau-Version installiert haben, welche wird beim Ausführen von wt aufgerufen?

Ich vermute, was auch immer Sie in App-Ausführungs-Aliasnamen in den Windows-Einstellungen festgelegt haben:
image

Ja.

Wäre schön, wenn das Terminal-Symbol auch im Kontextmenü enthalten wäre

Wäre schön, wenn das Terminal-Symbol auch im Kontextmenü enthalten wäre

Hey wadda weißt du, das ist # 6246.

Bitte überprüfen Sie aus Liebe aller anderen zu diesem Thema (alle 111 von Ihnen) diese Themen:
https://github.com/microsoft/terminal/issues?q=is%3Aopen+is%3Aissue+label%3AArea-ShellExtension

vor dem Kommentar zu "Mann, es wäre cool, wenn das Kontextmenü ..."

Sollte der Link Store Download zur Windows-Terminalvorschau ( microsoft.com/store/apps/9n8g5rfz9xk3?cid=storebadge&ocid=badge ) führen? 🤔

@DHowett oh nein, wir müssen den Bot aktualisieren

Huh, wir müssen den Bot unbedingt aktualisieren. Lol.

Ich habs.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen