以编程方式获取 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 的完整路径的主要内容,如果未能解决你的问题,请参考以下文章

编程求10000以内所有的完全数 matlab

Python执行powershell命令

在PowerShell上提升/ Sudo

JAVA编程-------------9查找1000以内的完数

命令行转义PowerShell的单引号

以编程方式获取 Android 手机型号,如何在 android 中以编程方式获取设备名称和型号?