2010-07-08 44 views
1

我應該在哪裏存儲應用程序安裝文件夾以供應用程序反饋?MS窗口中的應用程序路徑位置

+0

您的應用程序隱式知道它從哪裏啓動。只需使用相對路徑來訪問您的應用程序資源,然後您的用戶就可以進行多種安裝,而不會彼此搞砸。 – 2010-07-08 04:24:52

+0

嗨匿名, 假定應用程序不是從其安裝文件夾以及另一個不知道如何與我的應用程序通信的應用程序啓動的。在那個籠子裏,GetCurrentDirectory()調用給我啓動應用程序的路徑,而不是我的應用程序。我應該怎麼做呢? 謝謝, Sid – Sid 2010-07-08 04:37:47

回答

3

我相信你要找的是什麼GetModuleFileName功能,您可以使用像這樣:

// get the full path to the current executable 
wchar_t fullPath[MAX_PATH]; 
GetModuleFileName(NULL, fullPath, MAX_PATH); 

// cut the string at the last slash, because we just want the directory 
// not the actual executeable file name. 
TCHAR *lastSlash = wcsrchr(fullPath, L'\\'); 
lastSlash = 0; 

// directory where the executable is location is fullPath 

不管這將工作總體上當前工作目錄,並且,這是我該怎麼辦所有「相對路徑」的東西(也就是說,我從來沒有真正使用相對路徑,它們總是絕對路徑,基於上面函數返回的值)。

+0

請注意,這是您從哪裏啓動的位置,而不是您的應用安裝到的位置。他們_當然應該是相同的...... – MSalters 2010-07-08 13:35:19

+0

使用Unicode功能。但它必須是'* lastSlash = 0',你應該測試是否搜索斜槓是成功的。另外考慮使用'wstring'對象而不是C數組。 – Philipp 2010-07-08 13:59:39

1

您可以使用註冊表來存儲安裝文件夾。

0

:: GetModuleFileName(NULL,out_lpPathName,in_size)將爲您提供可執行文件的完整路徑。

0

ApplicationData文件夾,即使不是管理員訪問也可以幫助您訪問安裝數據。使用SHGetSpecialFolderPath與CISDL CSIDL_APPDATA

0

在註冊表中。具體而言,在HKEY_LOCAL_MACHINE\SOFTWARE\YourCompanyName\YourApplicationName\之下,如果您爲所有用戶安裝了應用程序(即在\ Program Files中),則在HKEY_CURRENT_USER\SOFTWARE\YourCompanyName\YourApplicationName\下安裝您的應用程序(如果您僅爲單個用戶安裝了該應用程序)。

相關問題