1、如何添加一个帐户到“IIS管理员”组?
我的目的是想添加network service这个东西到IIS6.0的管理员组中。
2、关于IIS配置的COM组件是哪一个?
我想改变它的权限,以便能够通过asp.net的webform中编辑站点属性。
问题背景:
我正在做一个通过asp.net编辑IIS的网站。平台使用win2k3+IIS6.0+.NET 2.0,使用系统的管理员帐户本地编译执行,一切正常。
使用系统的普通帐户编译执行,出现异常:System.Runtime.InteropServices.COMException (0x80070005): 拒绝访问。
工程结构说明:
一个专门添加站点的类: addsite.cs[没有问题],使用的是WMI,权限使用的方法是MSDN上介绍的部分代码模拟。
一个专门获取站点信息和修改站点的类:getiisinfo.cs[有问题],使用的是ADSI,权限方面使用以下方法都不能解决问题:
1、在webconfig中添加<identity impersonate="true" userName="wmi" password="wmi"/>
2、使用MSDN上的部分代码模拟代码调用说明:
useraddsite.aspx
void button_click(Object sender,EventArgs e){
new addsite(一些参数);
}addsite.cs
createsite(一些参数);//正常执行,这个也是需要权限的,使用wmi实现
getiisinfo gi=new getiisinfo();
gi.setiisinfo(一些参数);
//执行失败,触发异常,使用ADSI实现的,DirectoryEntry
补充说明:
管理员运行是完全可以的,说明全部都是权限的原因。为了安全,我不想把aspnet和everyone设置到管理员组。部分调试结果:
System.Web.HttpContext.Current.Response.Write("用户名" + System.Web.HttpContext.Current.User.Identity.Name);
if (impersonateValidUser("wmi", "127.0.0.1", "wmi"))
{
System.Web.HttpContext.Current.Response.Write("<br>用户名" + System.Web.HttpContext.Current.User.Identity.Name+"<br>");
}
undopersonate();impersonateValidUser()就是开始模拟的函数,成功模拟返回真。wmi是管理员。undopersonate()是取消模拟。
这个调试输出的结果都是
用户名webster
用户名webster
第一个输出能够理解,但是第二个是我执行模拟后输出的,应该输出
用户名wmi
才对。
[顶者有分]
我的目的是想添加network service这个东西到IIS6.0的管理员组中。
2、关于IIS配置的COM组件是哪一个?
我想改变它的权限,以便能够通过asp.net的webform中编辑站点属性。
问题背景:
我正在做一个通过asp.net编辑IIS的网站。平台使用win2k3+IIS6.0+.NET 2.0,使用系统的管理员帐户本地编译执行,一切正常。
使用系统的普通帐户编译执行,出现异常:System.Runtime.InteropServices.COMException (0x80070005): 拒绝访问。
工程结构说明:
一个专门添加站点的类: addsite.cs[没有问题],使用的是WMI,权限使用的方法是MSDN上介绍的部分代码模拟。
一个专门获取站点信息和修改站点的类:getiisinfo.cs[有问题],使用的是ADSI,权限方面使用以下方法都不能解决问题:
1、在webconfig中添加<identity impersonate="true" userName="wmi" password="wmi"/>
2、使用MSDN上的部分代码模拟代码调用说明:
useraddsite.aspx
void button_click(Object sender,EventArgs e){
new addsite(一些参数);
}addsite.cs
createsite(一些参数);//正常执行,这个也是需要权限的,使用wmi实现
getiisinfo gi=new getiisinfo();
gi.setiisinfo(一些参数);
//执行失败,触发异常,使用ADSI实现的,DirectoryEntry
补充说明:
管理员运行是完全可以的,说明全部都是权限的原因。为了安全,我不想把aspnet和everyone设置到管理员组。部分调试结果:
System.Web.HttpContext.Current.Response.Write("用户名" + System.Web.HttpContext.Current.User.Identity.Name);
if (impersonateValidUser("wmi", "127.0.0.1", "wmi"))
{
System.Web.HttpContext.Current.Response.Write("<br>用户名" + System.Web.HttpContext.Current.User.Identity.Name+"<br>");
}
undopersonate();impersonateValidUser()就是开始模拟的函数,成功模拟返回真。wmi是管理员。undopersonate()是取消模拟。
这个调试输出的结果都是
用户名webster
用户名webster
第一个输出能够理解,但是第二个是我执行模拟后输出的,应该输出
用户名wmi
才对。
[顶者有分]
解决方案 »
- 如何取得GridView 里的隐藏字段的值? 贴出代码.
- 关于Response.Redirect的问题
- DataGrid控件(可以实现不刷新增加删除等操作)?????????????????
- 如何在过程外部获取过程的进度状态?
- 求助:能否让IE关闭指定的页面?
- 程序中发生错误的时候,是否可以直接转到一个指定页面?
- visual studio.net 我在网上下了一个源码,结果开不起来
- asp.net menu?
- 如何绑定DataGrid模板列中的DropDownList控件!!!
- 如何获取gridview里某行某列的值?
- 见鬼了,求救啊,我的SQL条件查询为什么出不来数据啊!!!!!
- 关于一图象Image 控件运行后不能正常显示的问题???
呵呵,谢谢!!