Windows程序的相對路徑

最近一個程序出現了一個問題,每當打開選擇文件對話框時,日誌模塊就報一個IO錯,上網查了一下,

哥在http://bbs.csdn.net/topics/290069179一帖中的話一下讓我明白了(還是對Windows底層機制不夠了解啊),確定是由於使用了相對路徑引起的問題:

1.在沒有主動調用SetCurrentDirectory,之前當前路徑即爲進程啓動時所指定的初始路徑,該路徑不一定就是進程主程序所在的目錄(詳細可以參考CreateProcess當中的第八個參數);

2.通常Dialog都會設置爲修改當前路徑,所以當你選擇確定的時候,當前路徑就會變成Dialog上面顯示的(選擇的)路徑。

通常來講,使用這種不確定的相對路徑是非常不安全的,任何一個執行單位都有可能會通過顯式或者隱式的調用SetCurrentDirectory調整當前路徑,比較好的辦法是通過環境變量或者GetModuleFileName等方式取得某一特定的相對路徑(其中包括當前應用程序,當前用戶等等),然後再計算。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章