包含useLegacyV2RuntimeActivationPolicy的.NET app.config文件,当通过文件关联启动应用程序时未使用该文件

时间:2011-01-31 15:31:23

标签: .net shellexecute clr4.0

我的应用在其.exe.config中需要 useLegacyV2RuntimeActivationPolicy ,因为它是使用混合模式CLR2程序集的CLR4应用程序。

从“开始”菜单启动我们的应用程序时一切正常,但如果用户通过单击其中一个与我们的应用程序具有文件类型关联的文件来启动我们的应用程序,则不会读取app.config文件并且加载这些CLR2程序集失败。

根据进一步的研究,似乎ShellExecute不读取.config文件(即使指定了app文件夹),但WinExec也是如此。我假设shell使用ShellExecute通过文件关联启动应用程序。

除了编写在启动主应用程序进程之前设置当前文件夹的中间应用程序之外,还有其他解决方法吗?这是本网站其他地方的建议。

提前致谢!

1 个答案:

答案 0 :(得分:0)

检查文件关联注册表设置是否使用长文件名而不是短文件名。例如,此处的command值应使用长文件名来打开文档。

HKEY_CLASSES_ROOT\MyFile.Document\shell\open\command

我的猜测是Windows在启动应用程序时不会将短文件名扩展为长名称,并尝试使用短名称解析app.config文件,然后找不到它。

编辑:我通过在注册表中找到匹配的短名称重命名app.config来确认我的理论,然后就可以了。删除重命名的app.config文件会再次破坏它。