![](/img/trans.png)
[英]Windows: Can the return value of a process running C++ code be accessed if you don't run from command line?
[英]"Register" an .exe so you can run it from any command line in Windows
如何使 .exe 文件可以从 Windows 命令窗口中的任何位置访问? 是否有一些必须输入的注册表项?
您需要确保 exe 位于PATH
环境变量中的文件夹中。
您可以通过将其安装到已经在PATH
上的文件夹中或将您的文件夹添加到PATH
中来做到这一点。
您可以让您的安装程序执行此操作 - 但您可能需要重新启动机器以确保它被拾取。
视窗 10、8.1、8
打开开始菜单,
Edit environment variables
Edit the system environment variables
Environment variables...
按钮System Variables
框中找到path
变量Edit
New
.exe
或batch
文件的目录路径(目录意味着从路径中排除文件名)Ok
并
您可以添加以下注册表项:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe
在此项中,添加包含 exe 文件路径的默认字符串值。
您必须将.exe
文件的路径放入环境变量路径中。 转到“我的电脑 -> 属性 -> 高级 -> 环境变量 -> 路径”并通过将.exe
的目录添加到路径中来编辑路径。
我个人更喜欢的另一个解决方案是使用RapidEE进行更流畅的变量编辑。
与其将可执行文件放在路径上的目录中,不如在启动程序的路径上的目录中创建一个批处理文件。 这样您就不会将可执行文件与其支持文件分开,也不会无意中将同一目录中的其他内容添加到路径中。
这样的批处理文件可能如下所示:
@echo off
start "" "C:\Program Files (x86)\Software\software.exe" %*
假设我的 exe 是 C:\Program Files\AzCopy\azcopy.exe
命令/CMD/批处理
SET "PATH=C:\Program Files\AzCopy;%PATH%"
电源外壳
$env:path = $env:path + ";C:\Program Files\AzCopy"
我现在可以从任何 shell inc 命令提示符、powershell、git bash 等的任何位置简单地键入和使用azcopy
令人惊讶的是,在 windows 上这样一个简单的任务没有简单的解决方案,我创建了这个小 cmd 脚本,您可以使用它来定义 windows 上的别名(说明位于文件头本身):
https://gist.github.com/benjamine/5992592
这与 NPM 或 ruby gems 等工具用于注册全局命令的方法几乎相同。
要在 Windows 中为未自动添加到路径的应用程序获取类似 bash 的别名,而无需手动将每个应用程序添加到路径中,这是我想出的最干净的解决方案,它对系统所做的更改最少,并且拥有最多以后定制的灵活性:
mkdir c:\aliases
setx PATH "c:\aliases;%PATH%"
要启动C:\path to\my program.exe
,传入所有参数,在新窗口中打开它,创建c:\aliases\my program.bat
文件,内容如下(有关启动的详细信息,请参见NT 启动命令命令):
@echo off
start "myprogram" /D "C:\path to\" /W "myprogram.exe" %*
要启动C:\path to\my program.exe
,传入所有参数,但在同一窗口中运行它(更像 bash 的操作方式),请创建c:\aliases\my program.bat
文件,其中包含以下内容:
@echo off
pushd "C:\path to\"
"my program.exe" %*
popd
如果您根本不需要应用程序更改当前工作目录即可运行,您只需将符号链接添加到您的别名文件夹中的可执行文件:
cd c:\aliases\
mklink "my program.exe" "c:\path to\my program.exe"
添加到 PATH,步骤如下(Windows 10):
将其放在 c:\windows 目录中或将您的目录添加到环境设置中的“路径”(windows-break - tab advanced)
问候,//t
为了使它工作
您需要使用名称键Path
修改环境变量的值,您可以添加任意数量的路径,用;
分隔它们。 . 您给它的路径不能包含可执行文件的名称。
如果为变量Path
添加路径,则可以从 cmd 或 porweshell 调用其中的所有可执行文件,方法是在不带.exe
的情况下写入它们的名称,并且这些名称不区分大小写。
以下是如何从 python 脚本创建系统环境变量:
以管理员权限运行它以使其工作非常重要。 为了更好地理解代码,只需阅读上面的注释。
在 Windows 10 上测试
import winreg
# Create environment variable for call the program from shell, only works with compiled version
def environment_var(AppPath):
# Point to the registry key of the system environment variables
key = winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, r'System\CurrentControlSet\Control\Session Manager\Environment')
def add_var(path):
# Add the variable
winreg.SetValueEx(key, 'Path', 0, winreg.REG_SZ, path)
winreg.CloseKey(key)
try:
# Try to get the value of the Path variable
allPaths = winreg.QueryValueEx(key, 'Path')[0]
except Exception:
# Create the Path variable if it doesn't exist
add_var(path=AppPath)
return
# Get all the values of the existing paths
Path=allPaths.split(';')
# If the Path is empty, add the application path
if Path == ['']:
add_var(path=AppPath)
return
# Check if the application path is in the Path variable
if AppPath not in Path:
# Add the application path to the Path environment variable and add keep the others existing paths
add_var(path=AppPath+';'+allPaths)
# Only run this if the module is not imported by another
if __name__ == "__main__":
# Run the function
environment_var(AppPath=".")
您可以在winreg 文档中找到更多信息
这对我有用:
打开cmd,写下.bat文件的名字就可以了
例子
想要在特定链接上打开 chrome
用这个创建一个 .bat 文件(例如,将其保存为 blog.bat )
开始“”“https://pythonprogramming.altervista.org/”
从窗口桌面左下角的搜索栏中进入环境变量设置
进入环境变量(底部按钮)然后进入路径(底部)
添加路径,例如 G:\myapp_launcher
单击应用或确定
现在打开 cmd 并写博客:chrome 将在该页面上打开
做同样的事情来打开一个文件...在文件夹 G:\myapp_launcher (或任何你称之为放置批处理文件的文件夹)中创建一个 .bat,称之为 run.bat 或 myapp.bat 或其他任何东西(写在里面其中启动 filemane.pdf 或您要打开的任何文件),保存后,您可以使用 run 或 myapp 或任何您称为批处理文件的文件从 cmd 运行该文件。
您也可以将文件移动到C:\Windows
,但您需要使用管理员权限并注意。
我说的注意是什么意思?
您需要注意,因为如果您在此文件夹中不正确地和意外地修改、删除和进行一些更改,您也可能会弄乱 Windows 系统文件(Windows 甚至可能不再工作)......
示例:不要添加与 Windows 文件同名的文件
在安装中使用 1 行批处理文件:
SETX PATH "C:\Windows"
运行bat文件
现在将你的.exe 文件放在c:\windows 中,你就完成了。
您可以在命令行中键入“exename”,它会运行它。
另一种方法是通过将.LNK
添加到您的 $PATHEX。 然后只需为您的可执行文件创建一个快捷方式(即:yourshortcut.lnk)并将其放入$PATH 中列出的任何目录中。
警告注意:知道位于 $PATH 中列出的任何目录中的任何 .lnk 文件现在也都是“PATH'ed”。 出于这个原因,我更喜欢前面提到的批处理文件方法。
我不是程序员或类似的人,但这是我的简单解决方案:
PATH
; 这将防止您无意中将不需要的文件放入PATH
中。
如果您认为此答案需要改进,请随时发表评论。 干杯🍻。
PS 无需重新启动系统或文件资源管理器。 😀
最好的方法是将 .EXE 文件的文件夹路径添加到环境变量中的路径值中。
我不确定这适用于哪些版本的 Windows,但我将一些有用的.bat
和.exe
文件放入:
%LOCALAPPDATA%\Microsoft\WindowsApps
(相当于%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
)
这似乎在我的默认路径上。 我很想看看这是否是一般情况。
DOSKEY是 Microsoft 版本的“别名”。 该功能已内置于所有版本的 Windows(以及大多数版本的 DOS)中
doskey fred=c:\myApps\myprog.exe
每次打开命令提示符时都需要加载它。 您可以通过多种不同的方法来做到这一点。 一种方法是
Make a file containing all the doskey macros you want:
doskey fred=c:\whatever.exe
doskey alan=c:\whateverelse.exe
Change the file type / file name / file extension to .CMD or .BAT
ren myfile.txt myfile.CMD
Add the CMD/BAT file to your command processor autoruns key:
reg ADD \\HKCU\Software\Microsoft\Command Processor /v autorun /t REG_SZ /d myfile.CMD
有关更多信息,请参阅
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/doskey
和https://serverfault.com/a/1049766/142882
(serverfault.com/questions/95404/is-there-a-global-persistent-cmd-history)
如果有人在我之后寻找这个,这是一种添加路径的非常简单的方法。
将路径发送到如图所示的文件,从文件中复制并粘贴它,并在末尾添加特定路径,并在新路径前加上分号。 它可能需要在 Windows 7 之前进行调整,但至少它是一个简单的起点。
最好的方法是将 .EXE 文件安装到 windows/system32 文件夹中。 这样你就可以从任何位置运行它。 这是可以找到 .exe 之类 ping 的同一个地方
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.