我需要获取Powershell.exe的完整路径(绝对值)才能在我的代码中运行powershell脚本。任何人都可以建议我使用任何库或内置方法来做到这一点。
我尝试在windows.h中使用boost文件系统的absolute()方法和getFUllPathName()方法。但我得到的只是我项目的当前工作目录。
答案 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);
}