2

我正在尝试让 .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

并且应用程序启动得很好。 但是,如果我尝试这个:

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

应用程序启动。(!)所以显然注册表项也不起作用。

是否必须采取某种额外的步骤才能从完整路径运行 .Net 应用程序?

4

2 回答 2

4

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

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

当这不可能时,第二好的选择是尽快将当前文件夹更改为正在运行的 .EXE 文件夹。这意味着您应该尽快执行此行:

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

但这只有在您设法在错误代码之前执行时才有效。例如在静态构造函数中时可能很难。

于 2013-08-21T20:22:08.460 回答
2

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

于 2013-08-21T20:21:14.460 回答