我正试图让.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;
但是,只有在出现错误代码之前执行它,这才会起作用。例如,当它在静态构造函数中时可能会很困难。
听起来像是在工作目录中有一个相对文件引用。你的应用程序中是否有要加载的文件?请确保使用正确的文件路径。