【问题标题】:Detect commandline application from CMD without messing with PATH variable or System32/SysWow64 dir从 CMD 检测命令行应用程序而不弄乱 PATH 变量或 System32/SysWow64 目录
【发布时间】:2014-11-27 23:08:28
【问题描述】:

场景

我想在C:\Windows\System32C:\Windows\Syswow64 之外的文件夹上安装x86 命令行应用程序,并且仍然能够在CMD 下访问我的应用程序,而无需在PATH 内添加我的应用程序路径环境变量。

问题

这可能吗?也许触摸需要的注册表项?

注意:我知道如何将我的应用程序添加到 PATH 变量/regvalue 或如何从 CMD 访问我的应用程序,将所需的 .exe 放入 System32/SysWow64 文件夹中。这个问题只是为了学习替代方案,而不是解决PATH系统目录的问题。

代码

我已经从@Sertac Akyuz 在this answer 的评论中尝试了这种建议的方法,我已将MyApp.exe 存储在C:\ 根目录中,但我无法检测到仅将MyApp.exe 放在下面的应用程序命令。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"

[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"

【问题讨论】:

  • App Paths 不适用于命令提示符。但是您可以使用 App Paths 注册表作弊。您可以为 cmd.exe 本身创建一个条目,并在那里创建带有应用程序路径的 Path 键值。然后将此键值的路径附加到应用程序的环境变量(在本例中为命令提示符)。
  • 仅供参考:应用路径不被 cmd.exe 使用,但被其他 shell 使用,例如 tcc.exe:jpsoft.com/tccle-cmd-replacement.html
  • 如果你想从命令行运行一个已经包含在App Paths中的应用程序,你需要使用start MyApp
  • 我觉得这个问题有点奇怪,因为我不明白你想要解决什么确切的问题。您只是希望该命令可以从任何 CMD 提示符运行,但不更改 PATH ?有很多方法。第一个:提供可执行文件的完整路径。如果您不想更改 PATH,您还期望什么?也许检查您是否可以使用别名(类似于 Linux/Unix)。或者快捷方式、脚本……

标签: windows windows-8 cmd registry windows-shell


【解决方案1】:

App Paths 注册表设置 - 由 Windows 资源管理器使用,用于在您在“运行...”框中键入程序名称时定位程序,等等。这些设置不会影响cmd.exe 的行为。

为搜索应用程序设置cmd.exe 路径的唯一方法更改PATH 环境变量。您可以从您自己的 .bat/.cmd 开始 cmd.exe,您可以在其中设置当前会话的所有必需变量,而无需全局更改。

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 2018-05-29
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多