Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows bash管理的上下文菜单_Windows_Bash_Registry_Contextmenu_Admin - Fatal编程技术网

windows bash管理的上下文菜单

windows bash管理的上下文菜单,windows,bash,registry,contextmenu,admin,Windows,Bash,Registry,Contextmenu,Admin,我希望能够通过上下文菜单从windows资源管理器打开windows bash终端。就像你在Ubuntu中所做的一样。我已使用以下命令在HKEY\u CLASSES\u ROOT/Directory/Background/shell中创建了一个子键: powershell -c start -verb runas cmd '/c start /D "%V" bash.exe' 这对于在大多数目录中以管理员的身份打开bash非常有效,但是如果目录中有空间,它就会崩溃。似乎bash只接受字符串的一

我希望能够通过上下文菜单从windows资源管理器打开windows bash终端。就像你在Ubuntu中所做的一样。我已使用以下命令在
HKEY\u CLASSES\u ROOT/Directory/Background/shell
中创建了一个子键:

powershell -c start -verb runas cmd '/c start /D "%V" bash.exe'

这对于在大多数目录中以管理员的身份打开bash非常有效,但是如果目录中有空间,它就会崩溃。似乎bash只接受字符串的一部分,然后找不到要导航到的目录。我试过在
%V
周围加上转义引号,例如
““%V”
,但没有用。有什么想法吗?

这里有一种避免PowerShell的替代方法。创建一个名为“HKLM\Software\Classes\Directory\background\shell\runas”的键,并给它一个默认值,如“以管理员身份在bash中打开”。创建一个名为“command”的子项,并将其默认值设置为“C:\Windows\System32\cmd.exe”/C start/B/D“%V”bash.exe。如果您有不同的系统目录,请将路径更改为cmd.exe。它必须是cmd.exe的完全限定路径eryksun

尝试以下操作:
PowerShell-WindowStyle Hidden-NoProfile-Command Start Process-FilePath cmd.exe-ArgumentList'/c Start/B/D\%V\“bash.exe'-Verb runas
。这将通过PowerShell的初始命令行解析来转义带有反斜杠的双引号。运行带有隐藏窗口且没有配置文件的PowerShell时,应尽快将其从屏幕上清除。我们不能通过
-nonewindow
重用它的控制台,因为“runas”需要一个新的控制台。但是通过对
start
命令使用CMD的
/B
选项,我们至少可以避免不必要地为bash创建第三个控制台。不要在HKCR中写入键。这只是一个在“HKCU\Software\Classes”和“HKLM\Software\Classes”中搜索的视图。它是用于读取配置,而不是写入。向HKCR写信的结果取决于HKCU和HKLM中已经定义的内容。这里有一种避免PowerShell的替代方法。创建一个名为“HKLM\Software\Classes\Directory\background\shell\runas”的键,并给它一个默认值,如“以管理员身份在bash中打开”。创建名为“command”的子项,并将其默认值设置为
“C:\Windows\System32\cmd.exe”/C start/B/D“%V”bash.exe
。如果您有不同的系统目录,请将路径更改为cmd.exe。它必须是指向cmd.exe的完全限定路径。刚刚尝试了上一种方法,效果非常好。非常感谢。