2009年4月2日 星期四

win32下 如何讀取目前程式路徑

很多人 再寫win32程式的時候
我們常常需要知道目前執行檔的路徑
然後 接下來 可能用這個路徑去組合出 例如設定檔的位置

很多人的寫法
都是靠GetCurrentDirectory API
會發現到 有時候 取得的路徑 是對的
有時候是錯的

問題就在於 起始路徑的問題
例如:
有一個程式 c:\abc\a.exe
開啟cmd.exe
1. 在路徑c:\abc 執行a.exe --> GetCurrentDirectory => c:\abc
2. 在路徑c:\ 執行.\abc\a.exe --> GetCurrentDirectory => c:\
可以發現到執行的路徑的問題
所以 用GetCurrentDirectory 來決定目前的路徑是很危險的
最好的作法 使用GetModuleFileName 取得目前執行檔的路徑
然後 再把檔案名稱作null terminated 就可以取得正確的路徑了


Sample code: (win32 only)
=========================================

沒有留言:

張貼留言