在启动时启动应用程序,使用错误的路径加载

我正在使用注册表项将我的应用程序设置为在Windows Startup上加载(用户登录后)。 我的代码:

RegistryKey RegKey = Registry.LocalMachine; RegKey = RegKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true); RegKey.SetValue("AppName", "\"" + @"C:\Users\Name\Desktop" + "\""); RegKey.Close(); 

因此,使用此代码,我的应用程序在启动时加载,但工作目录是

C:\ Windows \ System32下

有谁知道为什么?

这对我不起作用,因为该程序需要在与该操作相同的目录中的几个文件。 如果程序加载在我选择的目录(“C:\ Users \ Name \ Desktop”)上,则问题将不存在。

有人对此有任何建议吗?

Directory.SetCurrentDirectory()可用于在应用程序启动时设置工作目录。 可以使用Application.ExecutablePath检索EXE路径。

把它们放在一起:

 var fi = new FileInfo(Application.ExecutablePath); Directory.SetCurrentDirectory(fi.DirectoryName); 

我已经找到了如何实现这一目标的廉价技巧。 当您的应用程序启动时,请再次阅读注册表以获取应用程序的启动路径(您打算使用的路径)。 例如:Appl1的启动路径为“C:\ Users \ Name \ Desktop \ App1.exe”。

阅读该路径的注册表后,将其设置为当前目录。 像这样的东西:

  RegistryKey RegKey = Registry.LocalMachine; RegKey = RegKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", false); string Path = RegKey.GetValue("App1.exe").ToString(); Path = Path.Replace(@"\App1.exe"", ""); // Now it's a valid directory. Directory.SetCurrentDirectory(Path); 

这对我有用,但如果有人有更好的方法,我很乐意听到他们。