Windows 8对应用程序具有更严格的权限吗?

时间:2012-11-02 19:23:07

标签: c# .net-4.0 permissions windows-8 windows-installer

我为我编写的应用程序安装了MSI。安装程序在Windows 7上运行正常。我决定今天在Windows 8上对它进行冒烟测试,它在WMI查询上爆炸了。我的下意识反应是我的WMI查询出了问题,但经过几个小时的挖掘(并发现其他错误)后,我开始认为存在与我的代码无关的系统性问题。

我发现的具体情况是:

  • WMI查询失败。我试图查询特定的命名空间。我在Windows 7和8机器之间比较了命名空间的安全权限,它们是相同的。如果我将“INTERACTIVE”添加到WMI命名空间ACL(它最初只有SYSTEM和Administrators),我 能够让查询在8机器上运行,这使我找到了下一个问题。 ..
  • 无法在LOCAL_MACHINE中打开注册表项。我注释掉了使用密钥的块,这导致我进入下一个问题......
  • 无法在“程序文件”中打开文件

我做了什么:

  • UAC最初一路走开,但我已经打开它(完全打开,通知我一切)。
  • 使用WMI命名空间的ACL
  • 进行修补
  • 在WMI查询中使用模拟尝试

我是否错过了Windows 8的一些技巧?

(代码是C#,.NET 4.0)

2 个答案:

答案 0 :(得分:1)

Windows 8与Windows 7 / Vista的不同之处在于它如何处理UAC被关闭。在7 / Vista中,程序被赋予高完整性级别,而在8个程序中被赋予中等完整性级别。

来源:http://www.brianbondy.com/blog/id/140/

答案 1 :(得分:0)

你真的没有给我太多的工作,所以我会做出很多假设,并根据我在Windows 8上看到的其他安装程序的失败而走出困境。

确保您在Windows 8上拥有与Windows 7相同的.NET版本。进入并安装.NET 3.5 / 4.0以及4.5。

我见过几个安装程序(一个TFS Power Tools),它们使用InstallUtil编写托管代码自定义操作,绑定到一个版本的框架,并在只有.NET 4.5时抛出错误。

对此的修复当然是使用Wix / DTF自定义操作,并使用CustomAction.Config指定支持的运行时并允许旧版激活策略。