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



我正试图让.Net C#应用程序从Registry Run键运行(在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun,其他字符串值在这里运行,启动一切都很好)。但由于某种莫名其妙的原因,我的应用程序路径没有启动我的应用。因此,我决定在命令提示符下手动运行该命令,看看这是否是问题所在。确实如此。所以现在我真的很困惑:

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

C:Program Files (x86)MyCompanyMyProductMyProduct.exe

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

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

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

"C:Program Files (x86)MyCompanyMyProductMyProduct.exe"

应用程序不会启动。(!)很明显,注册表项也不起作用。

是否需要采取某种附加步骤才能从其完整路径运行.Net应用程序?

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

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

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

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

但是,只有在出现错误代码之前执行它,这才会起作用。例如,当它在静态构造函数中时可能会很困难。

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

最新更新