2013-12-11 244 views
0

我需要獲取Powershell.exe的完整路徑(絕對)才能在我的代碼中運行PowerShell腳本。任何人都可以建議我使用任何庫或內置方法來執行此操作。要獲得powershell.exe的完整路徑

我在windows.h中嘗試了boost文件系統的絕對()方法和getFUllPathName()方法。但我設法得到的是我的項目的當前工作目錄。

+0

我懷疑你是否需要這個。你可以直接用'ShellExecute'運行你的腳本;它會爲你找到PowerShell。 – MSalters

回答

1

或者(如果你不喜歡依賴於環境變量),你也可以查詢註冊表。 PowerShell中,在安裝時,寫入FriendlyTypeName值,其中,我的機器上是

@ 「%SYSTEMROOT%\ SYSTEM32 \ windowspowershell \ 1.0 \ powershell.exe」,-107

這包含路徑。

該註冊表項是HKEY_CLASSES_ROOT\Microsoft.PowerShellConsole.1\FriendlyTypeName

使用Windows API來查詢註冊表。

1

解決方案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); 
}