这是这个问题的后续问题。
我正在开发 ac# windows 服务。
对服务的所有请求都是使用 WMI 完成的。
我正在使用 InstallUtils 安装服务。然后我使用InstalUtils注册 WMI 架构:
InstallUtils.exe /f 程序集路径.dll
我们正在使用以下方法获取 installUtils 的路径:
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() + "InstallUtil.exe";
在 app.config 我们设置:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"></supportedRuntime>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
我在 Windows 7 上安装了我的应用程序,然后将操作系统升级到 Windows 8。服务运行正常,只是我拥有的所有“WMI 片段”都不起作用。我收到错误: System.Management.ManagementException: Provider 无法对每个 WMI 操作(getInstances、查询、调用方法等)进行尝试操作
当我在 Win8 上安装 te 应用程序然后升级到 8.1 时也会出现此错误
当我不尝试升级时,WMI 在 Windows 7 和 Windows 8 上也可以正常工作。
如果我使用 /f assemplyPath.dll 重新运行 InstallUtils,升级后它会解决问题。此外,如果在升级之前在 Win7 上安装了 Visual Studio,则不会重现此问题。
我认为问题可能是在 Windows 7 中可用的 InstallUtils 版本来自
C:\Windows\Microsoft.NET\Framework\v2.0.50727\
在 Windows 8 中,我们正在使用
C:\Windows\Microsoft.NET\Framework\v4.0.30319
但是由于我在从 Windows 8 升级到 Windows 8.1 时再次遇到这个问题,所以它不再有意义了。但这只是一个猜测,我仍然无法理解这个问题,这个错误意味着什么?这个问题的根本原因可能是什么?