Windows XP下的程序路径(c#程序)

本文关键字:程序 路径 Windows XP | 更新日期: 2023-09-27 18:10:36

我的程序在Windows 7/Vista和我测试过的大多数Windows xp上运行良好。我打开一个文件,它是程序本身下的一个目录。它是Administration'adm.txt(这正是我使用的相对目录)。我在我的项目中使用。net 2.0。我试着在一个旧的Windows XP(安装了。net 2.0)上运行我的程序,我得到了我一生中见过的最奇怪的错误。该程序运行良好,直到用户打开一个打开文件对话框。之后,程序开始认为它在最后打开文件对话框所在的目录中。因此,如果打开文件对话框是最后一次浏览通过C:'My Documents',我试图打开Administration'adm.txt文件,我得到一个异常,"C:'My Documents'Administration'adm.txt"不存在。不幸的是,我自己不能再用那台电脑了,但我真的很想知道这是怎么发生的。有人有什么想法吗?

Windows XP下的程序路径(c#程序)

Windows中的标准行为是让文件对话框更改应用程序的当前目录。您可以使用OPENFILENAME结构的OFN_NOCHANGEDIR标志来防止它它用于配置打开和保存对话框。

相关文章,请参见《新旧事物》博客:

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"));