我有一个我编写的应用程序的 MSI 安装程序。安装程序在 Windows 7 上运行良好。我决定今天在 Windows 8 上对其进行冒烟测试,但它在 WMI 查询中爆炸。我的下意识反应是我的 WMI 查询出了点问题,但经过几个小时的挖掘(并发现其他错误),我开始认为存在与我的代码无关的系统性问题。
我发现的具体例子是:
- WMI 查询失败。我试图查询一个特定的命名空间。我比较了我的 Windows 7 和 8 机器之间命名空间的安全权限,它们是相同的。如果我将“INTERACTIVE”添加到 WMI 命名空间 ACL(它最初只有 SYSTEM 和管理员),我能够让查询在 8 台机器上运行,这导致我找到下一个问题......
- 未能在 LOCAL_MACHINE 中打开注册表项。我注释掉了使用密钥的块,这导致我进入下一个问题......
- 无法在“程序文件”中打开文件
我做了什么:
- UAC 一开始是完全关闭的,但我已经打开它(完全启动,通知我一切)。
- 修改了 WMI 命名空间的 ACL
- 尝试在 WMI 查询中使用模拟
我错过了 Windows 8 的一些技巧吗?
(代码是 C#,.NET 4.0)