我有一个本地用户,它是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(布尔 throwIfFail) System.DirectoryServices.DirectoryEntry.Bind() 在 System.DirectoryServices.DirectoryEntry.get_NativeObject() 在nanttest.Program.Main(String [] args)in C:\工作\ nanttest \ nanttest \的Program.cs:行 20
如果我以管理员身份登录时运行此代码,则可以正常运行。
此外,如果我以DomainAdmin用户身份登录,则此代码将失败。我已将MYDOMAIN \ DomainAdmins和MYDOMAIN \ mydomainuser添加为本地Administrators组的成员。
我应该为这些用户添加哪些其他权限,以便他们可以运行此代码。
答案 0 :(得分:6)
要回答我自己的问题,其他人可以找到解决方案:
问题在于Windows 2008中的默认UAC设置。即使用户位于Administrators组中,他/她仍需要提升权限才能运行某些操作(上面的操作似乎就在其中)。
因此,解决方案1 - 使用“以管理员身份运行”运行应用程序,或者从使用该选项启动的命令提示符启动它。
解决方案2:为管理员组禁用UAC - 我使用了this article中的方法#3(组策略更改)。请记住在这些更改后重新启动服务器。