我有一个本地用户,它是Administrators本地组的成员.
当我运行此代码时:
using System; using System.DirectoryServices; namespace nanttest { class Program { public static void Main(string[] args) { using(DirectoryEntry entry = new DirectoryEntry("IIS://localhost/W3SVC")) { object absobject = entry.NativeObject; Console.WriteLine("Name: {0}", entry.Name); } Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
我收到:
未处理的异常:System.Runtime.InteropServices.COMException(0x80070005):访问被拒绝.
在System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)中的System.DirectoryServices.DirectoryEntry.Bind()at System.DirectoryServices.DirectoryEntry.get_NativeObject()at nanttest.Program.Main(String [] args)in c:\ Work \nanttest \nanttest\Program.cs:第20行
如果我以管理员身份登录时运行此代码,则可以正常工作.
此外,如果我以DomainAdmin用户身份登录,则此代码将失败.我已将MYDOMAIN\DomainAdmins和MYDOMAIN\mydomainuser添加为本地Administrators组的成员.
我应该为这些用户添加哪些其他权限,以便他们可以运行此代码.
要回答我自己的问题,其他人可以找到解决方案:
问题出在Windows 2008中的默认UAC设置.即使用户在Administrators组中,他/她仍然需要提升权限才能运行某些操作(上面的一个似乎是其中之一).
因此,解决方案1 - 使用"以管理员身份运行"运行应用程序,或者从使用该选项启动的命令提示符启动它.
方案2:禁用UAC的管理员组-我已经使用方法#3,从这篇文章(组策略更改).请记住在这些更改后重新启动服务器.