以编程方式获取powershell.exe的完整路径

时间:2013-12-11 07:42:15

标签: c++ windows boost

我需要获取Powershell.exe的完整路径(绝对值)才能在我的代码中运行powershell脚本。任何人都可以建议我使用任何库或内置方法来做到这一点。

我尝试在windows.h中使用boost文件系统的absolute()方法和getFUllPathName()方法。但我得到的只是我项目的当前工作目录。

2 个答案:

答案 0 :(得分:2)

或者(如果您不喜欢依赖环境变量),您也可以查询注册表。 Powershell在安装时会写一个FriendlyTypeName值,该值在我的机器上

  

@“%systemroot%\ system32 \ windowspowershell \ v1.0 \ powershell.exe”, - 107

包含路径。

注册表项为HKEY_CLASSES_ROOT\Microsoft.PowerShellConsole.1\FriendlyTypeName

使用Windows API查询注册表。

答案 1 :(得分:1)

解决方案1: Powershell.exe很可能在您的路径中,因此您可以在C ++代码中使用它。

system("powershell.exe -Command .\\script.bat");

只需用脚本的路径替换.\\script.bat

解决方案2: 您可以使用环境变量来获取程序中powershell的路径。 只需在您的系统中使用powershell目录(PSPATH)的路径设置一个名为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);
}