ClickOnce安装期间的FileNotFoundException,缺少HKCU\Software\Classes\Software

tof*_*tim 12 c# clickonce

我们的一位用户在使用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)
Run Code Online (Sandbox Code Playgroud)

但传统的解决方案都没有奏效.我们尝试了:

  1. 删除与应用程序相关的清单中的文件夹和文件
  2. 删除2.0文件夹
  3. 删除App文件夹
  4. 运行mage -cc
  5. 杀死dfsvc.exe并再试一次(每次失败时都会加载dfsvc)

我在.NET 3.5和.NET 4.0中发布了一个helloworld应用程序,并将整个\ publish文件夹复制到他的机器上.这也没有安装,给出了同样的错误.最后,我去了注册表尝试为RobinDotNet添加增强的日志记录,并意识到HKCU\Software\Classes\Software完全缺失.继一些线程之后,我又重新命名为UsrClass.dat.但是,在注销并登录后,没有重建.我怀疑这可能是个问题.有关如何让ClickOnce再次运行的任何想法?

这是一个相当新鲜的Windows 7 Professional安装.

更新这里是另一个线索.我们可以将UsrClass.dat重命名为任何内容或删除它而不受Windows的任何投诉 - 因此它没有被加载.在我的机器上,它抱怨它正在使用中.

Mar*_*rko 0

我想说忘记 ClickOnce 并解决注册表问题。对于 StackOverflow 来说,这可能不是一个正确的主题,更像是 SuperUser.com...

无论如何:
1)尝试系统还原,看看是否可以找到该注册表配置单元存在的状态,您可能需要返回很多周。
2) 尝试从您的计算机导出该注册表配置单元并将其导入客户端计算机。看看错误是否消失,或者它是否抱怨不同的配置单元 - 注册表可能已损坏,并且还丢失了其他配置单元...
3)如果这两个不能解决问题,那么您就是最好进行全新安装(这比查找问题的确切原因更快,并且您可以确定一切都会得到修复)
4)最后卸载任何注册表清理或电脑调整软件。众所周知,它们会引起问题,注册表损坏就是其中之一。还要检查硬件问题,HDD 可能已形成坏块,或者 RAM 可能有故障(运行 MemTest 3 遍以上以确保确定)...