当前位置:首页 > 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法 二

利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法 二

点击次数:1147  更新日期:2010-12-28
\n

利用.NET Framework提供的System.DirectoryServices.DirectoryEntry类可以轻松创建IIS站点,并将站点设置为ASP.NET 2.0版本。无疑,这种方法与前面的那个方法相比较,是比较好的。一下代码需要注意的地方是:


\n

1,没有做路径检查,这个很简单;
2,没有做端口存在的检查,这个也不是很复杂;
3,ScriptMapsList数组是为了简单起见,直接从字符串进行分解出来,这个需要注意你自己的应用;
4;更多IIS权限处理,可根据需要进行添加。


\n

本方法代码如下:


\n

\n
string ScriptMaps = @”.asp,C:\\WINDOWS\\system32\\inetsrv\\asp.dll,5,GET,HEAD,POST,TRACE
.cer,C:\\WINDOWS\\system32\\inetsrv\\asp.dll,5,GET,HEAD,POST,TRACE
.cdx,C:\\WINDOWS\\system32\\inetsrv\\asp.dll,5,GET,HEAD,POST,TRACE
.asa,C:\\WINDOWS\\system32\\inetsrv\\asp.dll,5,GET,HEAD,POST,TRACE
.idc,C:\\WINDOWS\\system32\\inetsrv\\httpodbc.dll,5,GET,POST
.shtm,C:\\WINDOWS\\system32\\inetsrv\\ssinc.dll,5,GET,POST
.shtml,C:\\WINDOWS\\system32\\inetsrv\\ssinc.dll,5,GET,POST
.stm,C:\\WINDOWS\\system32\\inetsrv\\ssinc.dll,5,GET,POST
.asax,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ascx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ashx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.asmx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.aspx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.axd,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.vsdisco,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.rem,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.soap,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.config,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.cs,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.csproj,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vb,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vbproj,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.webinfo,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.licx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.resx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.resources,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.xoml,C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.rules,C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.master,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.skin,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.compiled,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.browser,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.mdb,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.jsl,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vjsproj,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sitemap,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.msgx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.ad,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.dd,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ldd,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sd,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.cd,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.adprototype,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.lddprototype,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sdm,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sdmDocument,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ldb,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.svc,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.mdf,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ldf,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.java,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.exclude,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.refresh,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG”;

String[] ScriptMapsList = System.Text.RegularExpressions.Regex.Split(ScriptMaps, “\\r\\n”);


///注意:这里没有进行进行端口存在的检查
// Access Flags
const int MD_ACCESS_READ = 0×00000001; //Allow read access.
const int MD_ACCESS_SCRIPT = 0×00000200; // Allow script execution.


string entPath = “IIS://localhost/w3svc”;
System.DirectoryServices.DirectoryEntry rootEntry = new System.DirectoryServices.DirectoryEntry(entPath);
int siteID = 1;
//得到现有的站点标识
foreach (System.DirectoryServices.DirectoryEntry entry in rootEntry.Children)
{
if (entry.SchemaClassName == “IIsWebServer”)
{
int ID = Convert.ToInt32(entry.Name);

if (ID >= siteID)
{
siteID = ID + 1;
}
}
}

System.DirectoryServices.DirectoryEntry newSiteEntry = rootEntry.Children.Add(siteID.ToString(), “IIsWebServer”);
newSiteEntry.Properties["ServerBindings"].Value = “:8001:”;
newSiteEntry.Properties["ServerComment"].Value = “mengxianhui2″;
newSiteEntry.CommitChanges();
System.DirectoryServices.DirectoryEntry vDirEntry = newSiteEntry.Children.Add(“root”, “IIsWebVirtualDir”);
vDirEntry.Properties["Path"].Value = @”C:\\mengxianhui”;
//System.Collections.ArrayList ScriptMapsList = new System.Collections.ArrayList();
//ScriptMapsList.Add(@”.aspx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG”);
//ScriptMapsList.Add(@”.asax,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG”);
//ScriptMapsList.Add(@”.svc,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG”);
//ScriptMapsList.Add(@”.msgx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG”);
//ScriptMapsList.Add(@”.config,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG”);
//ScriptMapsList.Add(@”.ascx,c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG”);
vDirEntry.Properties["ScriptMaps"].Value = ScriptMapsList;
vDirEntry.Properties["AppFriendlyName"][0] = “孟宪会的网站”;
vDirEntry.Properties["AppIsolated"][0] = 2;
vDirEntry.Properties["AccessFlags"][0] = MD_ACCESS_READ | MD_ACCESS_SCRIPT;
vDirEntry.Properties["AppRoot"][0] = “LM/W3SVC/” + siteID + “/Root”;
vDirEntry.CommitChanges();
newSiteEntry.CommitChanges();
MessageBox.Show(“创建完成!”);

\n