这是this question的后续问题。
我正在开发一个c#windows服务。
所有对服务的请求都是使用WMI完成的。
我正在使用InstallUtils安装服务。然后我使用InstalUtils注册WMI架构:
InstallUtils.exe / f assemblyPath.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,query,invoke方法等)尝试操作。
当我在Win8上安装te应用程序然后升级到8.1
时,也会发生此错误当我不尝试升级时,WMI在Windows 7和Windows 8上都能正常工作。
如果我用/ f assemplyPath.dll重新运行InstallUtils,升级后修复了这个问题。 此外,如果在升级之前在Win7上安装了Visual Studio,则不会再现该问题。
我认为问题可能是在Windows 7中可用的InstallUtils版本来自
C:\的Windows \ Microsoft.NET \框架\ V2.0.50727 \
在Windows 8中我们正在使用
C:\的Windows \ Microsoft.NET \框架\ v4.0.30319
但是,当我从Windows 8升级到Windows 8.1后再次遇到此问题时,它已不再存在了。 但这只是一个猜测,我仍然无法理解这个问题,这个错误意味着什么?可能是这个问题的根本原因是什么?