我需要獲取Powershell.exe的完整路徑(絕對)才能在我的代碼中運行PowerShell腳本。任何人都可以建議我使用任何庫或內置方法來執行此操作。要獲得powershell.exe的完整路徑
我在windows.h中嘗試了boost文件系統的絕對()方法和getFUllPathName()方法。但我設法得到的是我的項目的當前工作目錄。
我需要獲取Powershell.exe的完整路徑(絕對)才能在我的代碼中運行PowerShell腳本。任何人都可以建議我使用任何庫或內置方法來執行此操作。要獲得powershell.exe的完整路徑
我在windows.h中嘗試了boost文件系統的絕對()方法和getFUllPathName()方法。但我設法得到的是我的項目的當前工作目錄。
或者(如果你不喜歡依賴於環境變量),你也可以查詢註冊表。 PowerShell中,在安裝時,寫入FriendlyTypeName值,其中,我的機器上是
@ 「%SYSTEMROOT%\ SYSTEM32 \ windowspowershell \ 1.0 \ powershell.exe」,-107
這包含路徑。
該註冊表項是HKEY_CLASSES_ROOT\Microsoft.PowerShellConsole.1\FriendlyTypeName
使用Windows API來查詢註冊表。
解決方案1: Powershell.exe很可能在您的路徑中,因此您可以在您的C++代碼中使用它。
system("powershell.exe -Command .\\script.bat");
只需用您的腳本路徑替換.\\script.bat
即可。
解決方案2: 您可以使用環境變量來獲取程序中powershell的路徑。 只需在您的系統中使用powershell目錄的路徑(C:\WINDOWS\system32\WindowsPowerShell\v1.0
)設置一個名爲PSPATH
的環境變量(或其他)。 然後你可以用getenv()
函數得到它。
例子:
char* psVar = getenv("PSPATH");
if (psVar != NULL)
{
std::string psPath = psVar;
std::string psScript = ".\\script.bat";
system(psPath + "\\powershell.exe -Command " + psScript);
}
我懷疑你是否需要這個。你可以直接用'ShellExecute'運行你的腳本;它會爲你找到PowerShell。 – MSalters