我们的一位用户对ClickOnce遇到了非常严重的问题。该错误是经典的错误:
Following errors were detected during this operation. * [14/10/2011 01:40:25] System.IO.FileNotFoundException
- The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
- Source: System.Deployment
- Stack trace:
at System.Deployment.Internal.Isolation.IsolationInterop.GetUserStore(UInt32 Flags, IntPtr hToken, Guid& riid)
at System.Deployment.Internal.Isolation.IsolationInterop.GetUserStore()
at System.Deployment.Application.ComponentStore..ctor(ComponentStoreType storeType, SubscriptionStore subStore)
at System.Deployment.Application.SubscriptionStore..ctor(String deployPath, String tempPath, ComponentStoreType storeType)
at System.Deployment.Application.SubscriptionStore.get_CurrentUser()
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
但是,传统的解决方案均无效。我们尝试了:
我在.NET 3.5和.NET 4.0中发布了helloworld应用程序,并将整个\publish文件夹复制到了他的计算机上。这也没有安装,给出同样的错误。最后,我进入注册表尝试为每个RobinDotNet添加增强的日志记录,并意识到完全缺少HKCU\Software\Classes\Software。经过一些其他的线程,我去了并将其重命名为UsrClass.dat。但是,注销并登录后,未重建该目录。我怀疑这可能是问题。关于如何使ClickOnce再次工作有任何想法吗?
这是相当新鲜的Windows 7 Professional安装。
更新这是另一个提示。我们可以将UsrClass.dat重命名为任何名称,也可以删除它而不会受到Windows的任何投诉-因此不会被加载。在我的机器上,它提示正在使用中。
最佳答案
我会说忘了ClickOnce,然后整理一下注册表。这可能不是StackOverflow的正确主题,更像是SuperUser.com。
反正:
1)尝试系统还原,看看是否可以找到该注册表配置单元存在的状态,您可能不得不回溯许多周。
2)尝试从您的计算机中导出该注册表配置单元,然后将其导入到客户端计算机中。查看错误是否消失或是否提示不同的配置单元-注册表可能已损坏并且还缺少其他配置单元...
3)如果这两个方法不能解决问题,则最好进行全新安装(比查找问题的确切原因要快,并且可以确定所有问题都可以得到解决)
4)最后,卸载所有注册表清理程序或PC调整软件。众所周知,它们会引起问题,注册表损坏就是其中之一。另外还要检查硬件问题,HDD可能出现了坏块或RAM可能有故障(确保运行MemTest 3次以上才能确定)...