以编程方式获取 powershell.exe 的完整路径
Posted
技术标签:
【中文标题】以编程方式获取 powershell.exe 的完整路径【英文标题】:To get full path of powershell.exe programmatically 【发布时间】:2013-12-11 07:42:15 【问题描述】:我需要获取 Powershell.exe 的完整路径(绝对路径)才能在我的代码中运行 powershell 脚本。谁能建议我任何库或内置方法来做到这一点。
我在 windows.h 中尝试了 boost 文件系统的 absolute() 方法和 getFUllPathName() 方法。但我设法得到的是我项目的当前工作目录。
【问题讨论】:
我怀疑你需要这个。您可能可以直接使用ShellExecute
运行您的脚本;它会为你找到 PowerShell。
【参考方案1】:
或者(如果您不喜欢依赖环境变量)您也可以查询注册表。 Powershell 在安装时写入 FriendlyTypeName 值,在我的机器上是
@"%systemroot%\system32\windowspowershell\v1.0\powershell.exe", -107
其中包含路径。
注册表项是HKEY_CLASSES_ROOT\Microsoft.PowerShellConsole.1\FriendlyTypeName
使用 Windows API 查询注册表。
【讨论】:
【参考方案2】:解决方案 1: Powershell.exe 很可能在您的路径中,因此您可以在 C++ 代码中使用它。
system("powershell.exe -Command .\\script.bat");
只需将.\\script.bat
替换为您的脚本路径即可。
解决方案 2:
您可以使用环境变量来获取程序中 powershell 的路径。
只需在您的系统中设置一个名为PSPATH
的环境变量或其他东西,并使用您的powershell 目录的路径(C:\WINDOWS\system32\WindowsPowerShell\v1.0
)。
然后就可以通过getenv()
函数来获取了。
例子:
char* psVar = getenv("PSPATH");
if (psVar != NULL)
std::string psPath = psVar;
std::string psScript = ".\\script.bat";
system(psPath + "\\powershell.exe -Command " + psScript);
【讨论】:
以上是关于以编程方式获取 powershell.exe 的完整路径的主要内容,如果未能解决你的问题,请参考以下文章