应用程序不会从命令行完整路径启动,但会在CD到目录后启动

时间:2013-08-21 20:18:30

标签: c# windows path executable

我试图让一个.Net C#应用程序从注册表Run键运行(在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,其他字符串值存活并启动就好了)。但由于一些莫名其妙的原因,我的应用程序的路径不会启动我的应用程序。所以我决定从命令提示符手动运行命令,看看是不是问题。它是。所以现在我真的很困惑:

这是我在发布模式下编译的.Net 4.0 C#应用程序。该应用程序位于:

C:\Program Files (x86)\MyCompany\MyProduct\MyProduct.exe

我可以双击应用程序,它可以正常运行。我也可以打开CMD窗口并执行以下操作:

cd "C:\Program Files (x86)\MyCompany\MyProduct\"
MyProduct.exe

应用程序启动就好了。 HOWEVER ,如果我试试这个:

"C:\Program Files (x86)\MyCompany\MyProduct\MyProduct.exe"

应用程序不会启动。 (!)显然,注册表项也无法正常工作。

从完整路径运行.Net应用程序是否需要采取某种额外步骤?

2 个答案:

答案 0 :(得分:4)

显然,您的应用依赖于“当前目录”。用于打开某种文件。

最好的办法是找到依赖项并使用绝对路径修复它。

如果不可能,则第二个最佳选项是尽快将当前文件夹更改为正在运行的.EXE文件夹。这意味着您应该尽快执行此行:

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

但这只有在你设法在错误的代码之前执行时才会起作用。例如在静态构造函数中可能很难。

答案 1 :(得分:2)

听起来你有一个相对文件引用工作目录中的东西。是否有您要在应用中加载的文件?确保使用正确的文件路径。