簡體   English   中英

Windows XP下的程序路徑(C#程序)

[英]Program path under Windows XP(C# program)

我的程序在Windows 7 / Vista以及我測試過的大多數Windows XP上運行良好。 我打開一個文件,該文件是程序本身下的1個目錄。 它是Administration \\ adm.txt(這正是我使用的相對目錄)。 我正在為我的項目使用.NET 2.0。 我試圖在舊的Windows XP(安裝了.NET 2.0)上運行我的程序,我得到了我生命中見過的最奇怪的錯誤。 程序運行正常,直到用戶打開一個打開的文件對話框。 之后程序開始認為它位於打開文件對話框的最后一個目錄中。 因此,如果打開文件對話框上次瀏覽C:\\ My Documents \\,我嘗試打開Administration \\ adm.txt文件,我得到一個例外,“C:\\ My Documents \\ Administration \\ adm.txt”不存在。 不幸的是我不能再自己使用那台電腦,但我真的很想知道這是怎么發生的。 有人有什么想法嗎?

Windows中的標准行為是文件對話框更改應用程序的當前目錄。 您可以使用OFN_NOCHANGEDIR標志阻止它使用OPENFILENAME 結構 ,該結構用於配置打開保存對話框。

有關故事,請參閱Old New Thing博客:

http://blogs.msdn.com/b/oldnewthing/archive/2010/11/12/10089878.aspx

除了tinman的回復,我還要補充一點,使用與當前目錄相關的目錄並不是一個好主意,因為其他進程(包括您自己的進程)可以更改當前目錄。 以下代碼是在程序目錄下的目錄中創建文件名的更可靠方法:

string exeDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string fileName = System.IO.Path.Combine(exeDirectory, System.IO.Path.Combine("Administration", "adm.txt"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM