2010-06-14 35 views
1

我有一個作爲Windows CE盒子上的安裝程序進程的一部分運行的.CAB文件。 CAB是用C++編寫的。在C++中執行目錄

CAB文件作爲升級過程的一部分運行兩次,但在不同時間的不同位置。我怎麼才能找出什麼目錄.CAB文件正在執行(執行目錄)只使用C++?

感謝

+0

不知道我瞭解情況。 CAB有重複的磁盤映像?它從具有顯式(不同)開始文件夾的相同圖像運行兩次?在這兩種情況下,都不會:: GetCurrentDirectory()就足夠了? – 2010-06-14 14:46:01

+0

Windows CE沒有「當前目錄」的概念... – Wizard79 2010-06-14 14:47:09

+0

爲什麼你堅持使用'wince'標籤。當你使用'windows-ce'和'windows-ce'更清晰的時候是多餘的。 – Shaihi 2010-06-15 07:10:34

回答

4

如果「C++只有」你的意思是不使用Windows API的,我不認爲標準庫有一個函數來做到這一點。

如果你可以調用一個Win32 API,你只需要調用GetModuleFileName()作爲第一個參數NULL,你將得到當前可執行文件的路徑。

現在,問題是:我們運行.CAB,可執行文件是什麼?從.CAB提取的安裝DLL或運行.CAB的外殼組件?

您也可以嘗試GetCommandLine(),因爲第一個條目應該是可執行路徑/名稱(它實際上是傳遞給CreateProcess()的字符串,所以您不能100%確定)。

+0

我有權訪問winbase,所以這應該工作,我現在會嘗試 – Chris 2010-06-14 14:37:03

+0

這不幸的是只顯示加載執行cabfile而不是cabfile文件位置本身的wceload.exe的路徑:( – Chris 2010-06-14 14:42:15

+0

行,所以試着用GetCommandLine() ,希望你會看到CAB的路徑作爲wceload的參數... – Wizard79 2010-06-14 14:43:42