如何獲取當前程式檔案的路徑

2021-07-03 19:22:48 字數 1041 閱讀 5249

獲取當前程式檔案的路徑也算是乙個比較常見的需求,比如我有乙個檔案conn.xml位於.exe的同一目錄,在執行時需要從中讀取一些設定資訊。 

程序物件在.net中表現為system.diagnostics.process類,通過呼叫process.getcurrentprocess().mainmodule.filename可獲得當前執行的exe的檔名。但是這個方法得到的僅僅是檔名,如果程式執行期間沒有切換工作目錄,那麼可以呼叫system.io.path的方法獲取絕對路徑。但是當前目錄同樣可以通過environment.currentdirectory獲得,而且很多軟體在使用open dialog開啟檔案的時候,都會切換工作目錄,而使得這一機制失效。 

但是使用assembly的時候,可能會遇到許可權方面的問題,同時assembly.getcallingassembly或者assembly.getexecutingassembly有可能得到的不是.exe檔案的位置。在gac中的新增了強名的assembly,執行時是可以不必與.exe在同一目錄的。 

在通過以上方法取到所需的目錄後,可以呼叫system.io.path的方法獲取檔名,目錄名,絕對路徑等。停止對路徑字串的分析,而改用system.io.path類吧。 

//獲取新的 process 元件並將其與當前活動的程序關聯的主模組的完整路徑,包含檔名(程序名)。

string str = system.diagnostics.process.getcurrentprocess().mainmodule.filename;

result: x:\***\***\***.exe (.exe檔案所在的目錄+.exe檔名)

//獲取和設定當前目錄(即該程序從中啟動的目錄)的完全限定路徑。

string str = system.environment.currentdirectory;

result: x:\***\*** (.exe檔案所在的目錄)

//獲取應用程式的當前工作目錄(不可靠)。

string str = system.io.directory.getcurrentdirectory();

**:

如何獲取當前程式檔案的路徑

程序物件在.net中表現為system.diagnostics.process類,通過呼叫process.getcurrentprocess mainmodule.filename可獲得當前執行的exe的檔名。但是這個方法得到的僅僅是檔名,如果程式執行期間沒有切換工作目錄,那麼可以呼叫system....

獲取當前程式路徑

獲取部件所在位置。如果其所在的dll在gac中,那返回的就是gac中的路徑。str this.gettype assembly.location 獲取新的process元件並將其與當前活動的程序關聯的主模組的完整路徑,包含檔名 程序名 str system.diagnostics.process.g...

Delphi 獲取當前程式路徑

在delphi sysutils 單元中 edit1.text paramstr 0 自己全路徑c 555 qq.exe,可用於控制台 edit2.text extractfiledir paramstr 0 獲取本程式的路徑 c qq expandfilename 返回檔案的全路徑 含驅動器 路徑...