如何将NT AUTHORITY \ IUSR添加到Administrators组

时间:2012-01-13 21:01:58

标签: c# winforms active-directory directoryentry

我想在我的winforms应用程序中将IUSR帐户添加到该管理员组。下面的代码失败,因为它无法找到“NT AUTHORITY \ IUSR”的用户:

 DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
 DirectoryEntry administrators = AD.Children.Find("Administrators", "group");
 DirectoryEntry iusr = AD.Children.Find(@"NT AUTHORITY\IUSR", "user");

 administrators.Invoke("Add", new object[] {iusr.Path.ToString()});

我意识到这是一个坏主意。我这样做是因为我正在编写一个winforms应用程序,该程序在IIS7中以编程方式创建一个新网站仅供开发使用。网站正在成功创建,但每当我尝试加载页面时,ASP.NET都会显示错误“访问被拒绝”。当我将IUSR添加到管理员组时,一切正常。我还能尝试什么?以下是我用来创建新网站的代码:

Site site = servermgr.Sites.Add(websitename, physicalpath, port);
Binding binding = site.Bindings.CreateElement();
string bindinginfo = "*:" + port.ToString() + ":" + hostipaddress;

binding.Protocol = "http";
binding.BindingInformation = bindinginfo;
site.Bindings.Clear();
site.Bindings.Add(binding);

site.Applications.Add(applicationpath, applicationphysicalpath);

site.ApplicationDefaults.ApplicationPoolName = "Default";

servermgr.CommitChanges();

2 个答案:

答案 0 :(得分:1)

正确的解决方案是要求对页面进行身份验证。然后会提示浏览器登录;如果您使用适当授权的帐户,该页面将能够创建新网站。

IIS7允许您从(例如)ApplicationHost.config配置它,而以前的版本要求您编辑元数据库(通常来自IIS管理器)。

编辑:根据身份验证,浏览器和网络配置,可以安排浏览器使用您的域帐户自动登录页面。

答案 1 :(得分:1)

DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
DirectoryEntry administrators = AD.Children.Find("Administrators", "group");

administrators.Invoke("Add", new object[] {"WinNT://NT AUTHORITY/IUSR"});