将应用程序添加到msconfig启动后,Application.StartupPath会更改

时间:2013-05-21 17:29:14

标签: c# windows

感谢您抽出宝贵时间帮助我。

我有一个应用程序,我正在注册表中添加启动代码:

RegistryKey setRunAtStartup = Registry.LocalMachine.OpenSubKey  ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
        setRunAtStartup.SetValue("mls", Application.ExecutablePath.ToString());

我还有一个ini.xml文件,需要与我的应用程序位于同一个文件夹中。所以我以这种方式访问​​它:

XmlDocument doc = new XmlDocument();
        doc.Load(Application.StartupPath.ToString() + "/ini.xml");

问题是,重启计算机后,Application.StartupPath不再返回旧路径但返回C:\ Windows \ System32 \ myapp.exe,因此会抛出异常:找不到该文件夹​​中所需的ini.xml。 我怎样才能解决这个问题?我需要一个方法来返回REAL路径以访问我的ini.xml。谢谢!

1 个答案:

答案 0 :(得分:1)

不要使用当前的工作目录。而是使用:

Assembly.GetExecutingAssembly().Location
像这样:

Path.Combine(
    Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
    "myIniFile.ini")