在 Windows 8.1 上访问 Microsoft.Web.Administration.ServerManager.Site 时出现 UnauthorizedAccessException

UnauthorizedAccessException while accessing Microsoft.Web.Administration.ServerManager.Site on Windows 8.1

如果用户没有权限访问文件 "%SystemRoot%\System32\inetsrv\config\redirection.config",有人会得到任何关于在 Win8.1(和 Win8)上访问 Microsoft.Web.Administration.ServerManager.Sites 集合的提示吗?

因为在这种情况下用户会得到UnauthorizedAccessException...

更广泛地说,在 Win8 上,如果您的用户在 "%SystemRoot%\System32\inetsrv\config".

上没有权限,您可能会在任何 Microsoft.Web.Administration.ServerManager 属性 上遇到麻烦

这在 Win7、W2008 和 W2012 上完美运行..

方法:http://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration

我在 'client' 步骤(在 UI 中)启动的 WiX c# 自定义操作中需要这个来浏览已安装的网站和上面的应用程序,以便对新的 WebApplication 名称进行唯一性检查。

当然,我在谷歌搜索时找不到任何相关的答案。只有几个答案,他们暗示以提升的权限启动或更改文件夹的权限, 当然在常规用户设置 UI 过程中是不可行的。

例如:http://sharepointyankee.com/2011/03/30/system-unauthorizedaccessexception-filename-redirection-config/

仅供参考,似乎没有办法摆脱这个...

所以我选择修改我的自定义操作以通过捕获 UnauthorizedAccessException 来忽略这种情况,并且仍然设置唯一性检查成功和 return CA 调用成功。

在这种情况下,在客户端步骤中我不会失败,对应的是我无法获得唯一性检查的真实结果。但如果它不会因 UnauthorizedAccessException 而失败,我会得到结果,并且我可以向用户生成一个对话框,邀请他更改站点名称。

然后在服务器步骤中,顺便说一下,如果网站不是唯一的,我会做同样的测试,以便能够通过明确的消息使设置失败。 对于必须重新启动设置才能更改网站名称的用户来说,这不是最好的选择,但它可以通过尝试创建两个具有相同名称的网站来避免奇怪的故障。