- 浏览: 873886 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (341)
- Ajax (1)
- Asp.net (18)
- Java (5)
- Php (27)
- JavaScript (19)
- jQuery (12)
- 正则表达式 (4)
- SEO优化 (1)
- Windows 应用 (5)
- Flash (12)
- Asp (9)
- CSS (10)
- SQL Server (6)
- Flex (1)
- Ubuntu (0)
- mysql (34)
- PHP框架 (2)
- Apache (10)
- html (3)
- 网页切入 (1)
- Linux (33)
- vc++ (38)
- 友情链接 (0)
- firefox 插件 (4)
- SEO (1)
- Apache 压力测试 (1)
- imacros教程(一):imacros变量 (0)
- JS调用imacros所用到的函数 (0)
- imacros教程(三):调用csv文件 (1)
- imacros教程(二):JS调用imacros所用到的函数 (1)
- imacros 常用代码 (1)
- CSS最大宽度 (1)
- svn (1)
- WordPress (1)
- 网线的两种接法 (1)
- TP-LINK WR 系列无线路由器安全设置 (1)
- mysql talble is full ERR1114 (0)
- 解决mysql的内存表“table is full”错误 (1)
- linux 用户操作 (1)
- CentOS 挂载 ntfs 移动硬盘 (1)
- linux 储蓄设备操作 (1)
- Starting MySQL. ERROR! Manager of pid-file quit without updating file. (1)
- extmail 1.1 升级到 1.2 (1)
- extmail (0)
- emos (2)
- squid 3.0 (2)
- centos 6 minimal 安装 (1)
- linux实用命令详解 (1)
- win7 (1)
- php 字符串大小写转换 (1)
- 跟踪路由 tracert (1)
- css英文单词首字母添加样式 (1)
- jquery iframe 操作 (1)
- php 获取时间今天明天昨天时间戳 (1)
- php 上传限制 (1)
- ckeditor 配置 (1)
- flash 显示在 div 下 (1)
- flash + php 留言本乱码问题 (1)
- squid purge 出现 access denied 的解决方法 (1)
- delphi (1)
- 让delphi嵌入的WebBrowser无边框无滚动条 (1)
- delphi打开一个IE窗口 (1)
- delphi 获取鼠标当前位置的相对坐标 (1)
- delphi 获取可执行文件的当前路径 (1)
- delphi webbrowser 常用方法示例 (1)
- javascript 禁止鼠标右键... (1)
- delphi 播放gif 动画 (1)
- delphi弹出信息框大全 (1)
- Delphi中禁止WebBrowser右键的方法 (1)
- DELPHI 让程序只能运行一次 (1)
- Delphi XE2 破解补丁注册机下载使用教程 (1)
- Delphi RAD Studio XE2编译程序体积大的问题 (1)
- delphi 制作圆角窗口 (1)
- delphi 窗口 (1)
- delphi 窗体全透明,但窗体上的控件不透明 (1)
- delphi 窗口阴影 (1)
- delphi 获取任务栏高度 (1)
- delphi bsNone 之后任务栏右键无反应 (1)
- delphi 程序打开隐藏软件任务栏条 (0)
- delphi bsNone后的相关问题解决方法 (1)
- delphi bsNone 后显示边框 (1)
- delphi url编码操作 (1)
- delphi 调用exe文件 (1)
- delphi dll窗体的制作和调用 (1)
- delphi dll 调用窗体时的数据传递 (0)
- delphi 窗口显示在屏幕右下角 (1)
- 内网穿透&UDP打洞 (1)
- delphi idhttp post应用 (1)
- inno setup 开机启动 (1)
- inno setup 添加桌面快捷方式 (1)
- Delphi实现程序只运行一次并激活已打开的程序 (1)
- 解决 float point division by zero (1)
- Delphi 窗体显示在最前面,并获得焦点 (1)
- delphi 点击关闭按钮时隐藏窗口 (1)
- delphi 非客户区右键点击 (1)
- delphi真正可以截获WINDOWS关机消息的源码 (1)
- delphi utf8转码 (1)
最新评论
-
zj7243886:
非常感谢,这东西解决我的问题;谢谢你的分享
Linux 安装 jpeg-6b 错误 ./libtool 命令未找到 -
丶Sk.Mabon:
能让html也绕过吗。。机房限制很悲剧
绕过 <?PHP exit(’Access Denied’); ?> 限制 -
丶Sk.Mabon:
请教gzip.php 的写法。万分感谢!
apache 开启 gzip -
hyxj1220:
火狐中单纯的定义这样的样式,貌似不行,必须要让容器浮动
英文长文本换行CSS -
逆水寒龙:
太好了,正好用上,谢谢博主共享
Asp.net 将中文汉字转换成拼音首字和拼音全拼
本文介绍了ASP.NET如何通过WMI创建站点、添加虚拟目录和添加主机头。并且已在Windows Server 2003及IIS6的环境下测试通过。
这玩意儿花了老子3天时间才搞定,用了几个小时写代码,而且当中还花了不少时间解决Win32: Access denied error的问题。当然我要指出的是,无论NETWORK SERVER帐户还是IUSR_<servername>帐户都不要设置过大的权限。对于WMI和IIS metabase的安全机理,我还是一无所知的。我只不过解决问题而已。
看代码
首先要从Internet信息服务(IIS)管理器中获取网站标识符,点击“网站”根节点,右侧“标识符”显示的就是网站的ID。默认网站的标识符通常是1。
获取网站标识的功能,我们要用到一个namespace,代码如下:
using System.Management;
下文所有’ServerName’都表示你的服务器名称,或者如果你的代码是本地运行的,也可以用一个点来表示。
创建一个站点,你会用到如下函数。这个函数返回新网站的ID,这样你可以进一步对这个网站进行操作。
public static string CreateWebsite(string serverName, string appPoolName, string ip,string pathToRoot, string hostName, string domainName, int port) { ConnectionOptions options = new ConnectionOptions(); options.Authentication = AuthenticationLevel.Connect; options.EnablePrivileges = true; options.Impersonation = ImpersonationLevel.Impersonate; ManagementScope scope = new ManagementScope(string.Format(@\\{0}\root\MicrosoftIISv2, serverName), options); scope.Connect(); ManagementObject oW3SVC = new ManagementObject(scope, new ManagementPath(@"IIsWebService='W3SVC'"), null); ManagementBaseObject[] serverBindings = new ManagementBaseObject[1]; serverBindings[0] = CreateServerBinding(scope, string.Format("{0}.{1}", hostName, domainName), ip, port); ManagementBaseObject inputParameters = oW3SVC.GetMethodParameters("CreateNewSite"); inputParameters["ServerComment"] = string.Format("{0}.{1}", hostName, domainName); inputParameters["ServerBindings"] = serverBindings; inputParameters["PathOfRootVirtualDir"] = pathToRoot; ManagementBaseObject outParameter = oW3SVC.InvokeMethod("CreateNewSite", inputParameters, null); string siteId = Convert.ToString( outParameter.Properties["ReturnValue"].Value).Replace( "IIsWebServer='W3SVC/", "").Replace("'", ""); ManagementObject oWebVirtDir = new ManagementObject(scope, new ManagementPath(string.Format( @"IIsWebVirtualDirSetting.Name='W3SVC/{0}/root'", siteId)), null); oWebVirtDir.Properties["AppFriendlyName"].Value = string.Format("{0}.{1}", hostName, domainName); oWebVirtDir.Properties["AccessRead"].Value = true; oWebVirtDir.Properties["AuthFlags"].Value = 5; // Integrated Windows Auth. oWebVirtDir.Properties["AccessScript"].Value = true; oWebVirtDir.Properties["AuthAnonymous"].Value = true; oWebVirtDir.Properties["AppPoolId"].Value = appPoolName; oWebVirtDir.Put(); ManagementObject site = new ManagementObject(scope, new ManagementPath(Convert.ToString( outParameter.Properties["ReturnValue"].Value)), null); site.InvokeMethod("Start", null); return siteId; }
创建一个虚拟目录:
public static void AddVirtualFolder(string serverName, string websiteId,string name, string path) { ManagementScope scope = new ManagementScope(string.Format(@"\\{0}\root\MicrosoftIISV2", serverName)); scope.Connect(); string siteName = string.Format("W3SVC/{0}/Root/{1}", websiteId, name); ManagementClass mc = new ManagementClass(scope,new ManagementPath("IIsWebVirtualDirSetting"), null); ManagementObject oWebVirtDir = mc.CreateInstance(); oWebVirtDir.Properties["Name"].Value = siteName; oWebVirtDir.Properties["Path"].Value = path; oWebVirtDir.Properties["AuthFlags"].Value = 5; // Integrated Windows Auth. oWebVirtDir.Properties["EnableDefaultDoc"].Value = true; // date, time, size, extension, longdate ; oWebVirtDir.Properties["DirBrowseFlags"].Value = 0x4000003E; oWebVirtDir.Properties["AccessFlags"].Value = 513; // read script oWebVirtDir.Put(); ManagementObject mo = new ManagementObject(scope, new System.Management.ManagementPath("IIsWebVirtualDir='" + siteName + "'"), null); ManagementBaseObject inputParameters = mo.GetMethodParameters("AppCreate2"); inputParameters["AppMode"] = 2; mo.InvokeMethod("AppCreate2", inputParameters, null); mo = new ManagementObject(scope, new System.Management.ManagementPath( "IIsWebVirtualDirSetting='" + siteName + "'"), null); mo.Properties["AppFriendlyName"].Value = name; mo.Put(); }
给网站添加一个主机头:
public static void AddHostHeader(string serverName, string hostHeader, string ip, int port, string websiteID) { ManagementScope scope = new ManagementScope(string.Format( @"\\{0}\root\MicrosoftIISV2", serverName)); scope.Connect(); string siteName = string.Format("'W3SVC/{0}'", websiteID); ManagementObject mo = new ManagementObject(scope, new System.Management.ManagementPath("IIsWebServerSetting=" + siteName), null); ManagementBaseObject[] websiteBindings = (ManagementBaseObject[])mo.Properties["ServerBindings"].Value; ManagementObject mco = CreateServerBinding(scope, hostHeader, ip, port); ManagementBaseObject[] newWebsiteBindings = new ManagementBaseObject[websiteBindings.Length+1]; websiteBindings.CopyTo(newWebsiteBindings, 0); newWebsiteBindings[newWebsiteBindings.Length - 1] = mco; mo.Properties["ServerBindings"].Value = newWebsiteBindings; mo.Put(); }
最后别忘了这个函数,它可以为网站绑定一个网络标识。
private static ManagementObject CreateServerBinding(ManagementScope scope,string hostName, string ip, int port) { ManagementClass mc = new ManagementClass(scope, new ManagementPath("ServerBinding"), null); ManagementObject mco = mc.CreateInstance(); mco.Properties["Hostname"].Value = hostName; mco.Properties["IP"].Value = ip; mco.Properties["Port"].Value = port; mco.Put(); return mco; }
注意的几点
安全。如果之用上面的那坨代码还不行。我千方百计想让其运行,但貌似忽视了2件事情。访问WMI和IIS metabase。
ASP.NET在Windows Server 2003和IIS6.0上运行默认使用的是NETWORK SERVICE帐户。但是,我们还是要使用客户端模拟。
所以在Web.config中添加下面一个配置:
<identity impersonate="true" />
使用了这个配置,IUSR_<servername>会使用客户端模拟的方式去访问IIS metabase。在后面的文章里,我就用IUSR_来表示这个帐户。不要忘记,在IUSR_后面加上你的服务器名称才是这个帐户的名字。
WMI权限设置
- 控制面板 –> 管理工具 –> 计算机管理 –> 服务和应用程序。
- 右键WMI控制,点击“属性”。
- 选择“安全”选项卡。
- 展开Root树
- 点击MicrosoftIISv2。
- 点击“安全设置”。
- 点击“高级”。
- 双击IUSR_(如果“组或用户名称”里面没有的话,就把它添加进去)
- 把IUSR_ “应用到”设置成“这个名称控件和子名称空间”
- “允许”所有权限。
- 所有窗口都点击“确定”。
IIS metabase权限设置
- 下载并安装IIS6 Resource Kit。
- 运行MetaBase Explorer (在开始菜单的IIS Resource Kit中可以找到)。
- 展开树形目录,右键第一个或第二个节点并且选择“Permissions”。
- 如果提示你“The current key inherits its security permissions from the key /”,点击“是”。
- 选择“IIS_IUSRS”,如果没有的话,把它添加进去。
- 选择“Full Control”。
- 所有窗口都点击“确定”。
有了足够的权限就能运行了。
如果有高人能对这个方法谈谈自己的感想,并且能指出更好的配置IIS和WMI的方法,那就更赞了。记得之前,我都是自己捣鼓出来的,所以我不知道这个方法是不是最佳的方案。
如果你在运行代码的时候碰到任何问题,我愿意效劳。
发表评论
-
asp.net 判断用户名
2010-10-31 16:59 1152//正则表达式,判断是否含有除了字母及数字外的其他字符 2 ... -
asp.net 创建文字特效
2010-10-31 00:31 2120相信 中的 艺术字 功能大家都不陌生, 前面这个 " ... -
ASP.NET清除页面缓存
2010-01-15 12:23 2234ASP.NET清除页面缓存 (1) Respon ... -
windows 2003 端口映射
2009-12-31 16:38 2731本文介绍的端口映射指的是利用Windows2003服务期的NA ... -
Asp.net 进行IO操作时要注意要把其他资源关闭
2009-12-25 11:02 1025Asp.net 进行IO操作时要注意要把其他资源关闭 ... -
在Asp.net 中嵌入.swf
2009-12-24 19:58 1443应该是:在项目下,点击swf文件邮件-,属性里面有:Build ... -
Asp.net 给图片加文字水印
2009-12-18 21:32 1283using System.Drawing; using Sys ... -
asp.net程序性能优化的七个方面
2009-12-06 18:48 1417asp.net程序性能优化的七个方面.doc 一、数据库操作 ... -
iis 7 中无法使用 httpcontent.rewritepath
2009-11-28 04:27 1298iis7中无法使用 httpcontent.rewritepa ... -
asp.net 弹javascript的几种方式
2009-07-29 21:05 1047string str = "<script l ... -
压缩HTML代码
2009-07-17 23:09 2091/// <summary> /// 压缩ht ... -
在同一个解决方案中一定要将调用DLL文件的工程设为启动项目
2009-07-01 23:34 2239在同一个解决方案中一定要将调用DLL文件的工程设为启动项目 方 ... -
C#日期格式精确到毫秒
2009-06-24 10:49 5129有时候我们要对时间进行转换,达到不同的显示效果 默认格式为: ... -
DataTable 添加新行
2009-05-26 07:47 1629DataTable添加行 //新建表 Data ... -
vs2005,vs2008给生成的.dll自定义固定命名
2009-05-26 02:38 2223在用VS2005,VS2008发布网站项目时,默认生成bin目 ... -
Asp.net Request获取服务器变量的方法
2009-05-21 16:48 2469HTTP_USER_AGENT 获得 ... -
Asp.net Request方法获取客户端的信息
2009-05-21 16:29 6986Response.Write("客户端计算机名:&q ...
相关推荐
虚拟主机系统是针对网络公司销售域名、主机、邮局、数据库等产品时效率低、管理难等问题而自主研发的集产品自动化开通、管理、续费、升级等功能为一体的软件系统。通过多年的改进与运作,软件已具有功能强大、安全...
EasyHost虚拟主机系统是针对网络公司销售域名、主机、邮局、数据库等产品时效率低、管理难等问题而自主研发的集产品自动化开通、管理、续费、升级等功能为一体的软件系统。通过多年的改进与运作,软件已具有功能强大...
④ 强大的虚拟主机管理功能,如:站点状态、FTP帐号状态、日志状态、FTP密码、默认文档、自定义错误页面、绑定域名、自定义脚本错误消息 、IP访问限制、关闭/恢复站点执行权限、在线压缩、在线解压缩、.NET版本切换...
客户下单后后台对订单进行管理小型普通商品功能,后台可添加日期服务型或单次交易商品,客户下单后在总后台可对其发货等操作四、产品面板虚拟主机面板,用户可自行修改FTP帐号、密码,域名绑定、默认首页等虚拟主机...
梦奈宝塔主机系统又称 MNBT ,是一种将宝塔面板 (bt.cn) 转换为虚拟主机并且提供操作面板的系统 ,它由 PHP+MySQL 编写的后端 , 前端使用的为光年开源框架,由于其极快大响应速度和独特的功能深受用户的喜爱。...
用户可以自由添加虚拟主机 模块化的程序设计,使用参数调用更加便捷 开放源代码,所有文件代码可以自由修改,没有任何加密,没有任何DLL组件 没有空间域名及使用时间的任何限制 栏目设定简明便捷,采用无限级...
2.继续添加新的虚拟主机的域名? 不再添加选择“n”,没有更多的域名。请输入额外增加的虚拟主机域名,中间以一个“空格”分隔 例如: bbs.jimmyli.tk blog.jimmyli.tk 3.请输入新的虚拟主机的目录 默认目录(直接...
2.继续添加新的虚拟主机的域名? 不再添加选择“n”,没有更多的域名。请输入额外增加的虚拟主机域名,中间以一个“空格”分隔 例如: bbs.jimmyli.tk blog.jimmyli.tk 3.请输入新的虚拟主机的目录 默认目录(直接...
④ 强大的虚拟主机管理功能,如:站点状态、FTP帐号状态、日志状态、FTP密码、默认文档、自定义错误页面、绑定域名、自定义脚本错误消息、IP访问限制、关闭/恢复站点执行权限、在线压缩、在线解压缩、。...
后面的default参数表示这个是默认虚拟主机。 这个设置非常有用。 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500. 目前国内很多机房都要求网站主关闭空主机头,防止...
信誉、质量、服务有保证 用户可以评论虚拟主机 用户可以自由添加虚拟主机 模块化的程序设计,使用参数调用更加便捷 开放源代码,所有文件代码可以自由修改,没有任何加密,没有任何DLL组件 没有空间域名及使用时间的...
在2.0的基础上美化了所有的程序。... 客户订单:里面有主机和基它的订单,域名订单也在里面查,不要找不到。 会员管理:代理申请批准和会员的管理,都在这。 综合服务:好重要,你客户的反馈等在这。
功能说明:根据给出的列表...▲单个或多个空间/域名备案检查: http://www.xmyy.com/beian.php?dn=www.xmdoor.com,www.ok118.com,www.cncrack.com,www.eagleos.org ▲使用域名列表文件vhost01.txt进行批量备案检查: ...
设置、查看主机绑定域名 设置、查看主机404错误页面 设置查看站点性能(2000系统下有效) 设置、查看站点日志状态、参数 修改FTP帐号密码、空间大小、状态 查看主机总空间、已使用及剩余空间大小 *)...
2、自动创建一个目录,只有管理员和创建的IUSR_XXX读取和写入(可以设置)访问,防FSO跨目录访问。 3、自动生成wwwroot,database,和logfiles三个文件夹。设置wwroot为网站目录,logfiles为日志目录,database为你存放...
用户可以自由添加虚拟主机 模块化的程序设计,使用参数调用更加便捷 开放源代码,所有文件代码可以自由修改,没有任何加密,没有任何DLL组件 没有空间域名及使用时间的任何限制 栏目设定简明便捷,采用无限级...
用户可以自由添加虚拟主机 模块化的程序设计,使用参数调用更加便捷 开放源代码,所有文件代码可以自由修改,没有任何加密,没有任何DLL组件 没有空间域名及使用时间的任何限制 栏目设定简明便捷,采用无限级分类 ...
只要将本系统放置于您的虚拟主机根目录下即可。采用数据库后台管理:随时修改,随时使用。无专业 DNS 软件需要等待刷新周期的烦恼。 功能强大。可以方便的添加主域名、二级域名。并且可以设置二级域名使用方式。如...
用户可以自由添加虚拟主机 模块化的程序设计,使用参数调用更加便捷 开放源代码,所有文件代码可以自由修改,没有任何加密,没有任何DLL组件 没有空间域名及使用时间的任何限制 栏目设定简明便捷,采用无限级...
*)主机模块 自主开通主机 删除到期站点 设置、查看站点状态 修改、查看站点IIS连接数 设置、查看站点默认文档 设置、查看主机CPU限制(2000系统下有效) 设置、查看站点带宽限制 设置、查看主机绑定域名 设置、查看...