本人想制作一个asp.net网站的安装包,以便别人方便的安装使用。
看了一个网络文章,步骤不少。有写代码调试不成功,不知道不是环境问题,把我折腾了好几天。
vs2008里的web setup project可以轻松的打包asp.net网站,但是安装时只能创建虚拟目录。
我需要创建站点,修改web.config,执行sql脚本。
于是使用 setup project。
网站的方法很多,这里我就说说遇到的问题。
1,在用C#创建网站时,很多代码无效,后来终于能创建了,在win2003里创建了网站,但是没有应用程序,没有读取权限,没有使用 Windows 身份验证。网站是创建了,但是这些都没有配置好,需要C#完成。
2,在安装网站后,创建的文件夹可能没有web访问的权限,会导致本地可以访问,外网不能访问,需要C#修改文件夹权限。
参考:http://www.cnblogs.com/nerocool/archive/2008/08/13/1266733.html
实例代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.Collections;
using System.Text.RegularExpressions;
using System.IO;
using System.Security.AccessControl;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;
namespace ClassLibrary
{
public class IISClass
{
UserName,Password,HostName的定义#region UserName,Password,HostName的定义
public static string HostName
{
get
{
return hostName;
}
set
{
hostName = value;
}
}
public static string UserName
{
get
{
return userName;
}
set
{
userName = value;
}
}
public static string Password
{
get
{
return password;
}
set
{
if (UserName.Length <= 1)
{
throw new ArgumentException("还没有指定好用户名。请先指定用户名");
}
password = value;
}
}
public static void RemoteConfig(string hostName, string userName, string password)
{
HostName = hostName;
UserName = userName;
Password = password;
}
private static string hostName = "localhost";
private static string userName = "qf";
private static string password = "qinfei";
#endregion
根据路径构造Entry的方法#region 根据路径构造Entry的方法
/**//// <summary>
/// 根据是否有用户名来判断是否是远程服务器。
/// 然后再构造出不同的DirectoryEntry出来
/// </summary>
/// <param name="entPath">DirectoryEntry的路径</param>
/// <returns>返回的是DirectoryEntry实例</returns>
public static DirectoryEntry GetDirectoryEntry(string entPath)
{
DirectoryEntry ent;
if (UserName == null)
{
ent = new DirectoryEntry(entPath);
}
else
{
ent = new DirectoryEntry(entPath, HostName + "\\" + UserName, Password, AuthenticationTypes.Secure);
//ent = new DirectoryEntry(entPath, UserName, Password, AuthenticationTypes.Secure);
}
return ent;
}
#endregion
添加,删除网站的方法#region 添加,删除网站的方法
public static void CreateNewWebSite(string hostIP, string portNum, string descOfWebSite, string commentOfWebSite, string webPath)
{
if (!EnsureNewSiteEnavaible(hostIP + portNum + descOfWebSite))
{
throw new ArgumentNullException("已经有了这样的网站了。" + Environment.NewLine + hostIP + portNum + descOfWebSite);
}
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry rootEntry = GetDirectoryEntry(entPath);//取得iis路径
string newSiteNum = GetNewWebSiteID(); //取得新网站ID
DirectoryEntry newSiteEntry = rootEntry.Children.Add(newSiteNum, "IIsWebServer"); //增加站点
newSiteEntry.CommitChanges();//保存对区域的更改(这里对站点的更改)
newSiteEntry.Properties["ServerBindings"].Add(":"+portNum+":"); //(hostIP + portNum + descOfWebSite);
newSiteEntry.Properties["ServerComment"].Value= commentOfWebSite ;
newSiteEntry.Properties["AccessRead"].Add(true); //增加 读取权限
// newSiteEntry.Properties["AppFriendlyName"].Add("DefaultAppPool");
// System.DirectoryServices.DirectoryEntry appPoolRoot = new System.DirectoryServices.DirectoryEntry(@"IIS://" + HostName + "/W3SVC/AppPools");
// newSiteEntry.Properties["ApplicationProtection"].Value="vsdapMedium";
newSiteEntry.Properties["DefaultDoc"][0] = "Default.aspx"; //默认文档
newSiteEntry.Properties["AuthNTLM"][0] = true; // 指定集成 Windows 身份验证
newSiteEntry.CommitChanges();
DirectoryEntry vdEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir");
vdEntry.CommitChanges();
vdEntry.Properties["Path"].Value = webPath;
增加站点的应用程序设置#region 增加站点的应用程序设置
vdEntry.Invoke("AppCreate", true);
vdEntry.Properties["AppFriendlyName"].Value = commentOfWebSite;// 友好的显示名称
vdEntry.Properties["AppIsolated"].Value = 2; // 值 0 表示应用程序在进程内运行,值 1 表示进程外,值 2 表示进程池
vdEntry.Properties["AccessScript"][0] = true; // 可执行脚本。执行权限下拉菜单中
vdEntry.Properties["AuthNTLM"][0] = true; // 指定集成 Windows 身份验证
#endregion
vdEntry.CommitChanges();
增加虚拟目录aspnet_client#region 增加虚拟目录aspnet_client
try
{
DirectoryEntry _RootFolder = new DirectoryEntry("IIS://" + HostName + "/W3SVC/" + newSiteNum + "/Root");
DirectoryEntry _VirDir = _RootFolder.Children.Add("aspnet_client", "IIsWebVirtualDir");
_VirDir.Properties["Path"].Value = @"C:\Inetpub\wwwroot\aspnet_client"; //webPath; //设置路径
_VirDir.Invoke("AppCreate", true);
//设置名称
_VirDir.Properties["AppFriendlyName"].Value = "aspnet_client";
_VirDir.Properties["AppIsolated"].Value = 2;
_VirDir.Properties["AccessScript"][0] = true; // 可执行脚本。执行权限下拉菜单中
_VirDir.CommitChanges();//更改目录
_RootFolder.CommitChanges(); //更改根目录
}
catch
{
//MessageBox.Show("共享目录已存在,不进行共享操作!");
}
#endregion
}
/**//// <summary>
/// 删除一个网站。根据网站名称删除。
/// </summary>
/// <param name="siteName">网站名称</param>
public static void DeleteWebSiteByName(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);
string rootPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry rootEntry = GetDirectoryEntry(rootPath);
rootEntry.Children.Remove(siteEntry);
rootEntry.CommitChanges();
}
#endregion
Start和Stop网站的方法#region Start和Stop网站的方法
public static void StartWebSite(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);
siteEntry.Invoke("Start", new object[] { });
}
public static void StopWebSite(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);
siteEntry.Invoke("Stop", new object[] { });
}
#endregion
确认网站是否相同#region 确认网站是否相同
/**//// <summary>
/// 确定一个新的网站与现有的网站没有相同的。
/// 这样防止将非法的数据存放到IIS里面去
/// </summary>
/// <param name="bindStr">网站邦定信息</param>
/// <returns>真为可以创建,假为不可以创建</returns>
public static bool EnsureNewSiteEnavaible(string bindStr)
{
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);
foreach (DirectoryEntry child in ent.Children)
{
if (child.SchemaClassName == "IIsWebServer")
{
if (child.Properties["ServerBindings"].Value != null)
{
if (child.Properties["ServerBindings"].Value.ToString() == bindStr)
{
return false;
}
}
}
}
return true;
}
#endregion
获取一个网站编号//一个输入参数为站点描述#region 获取一个网站编号//一个输入参数为站点描述
/**//// <summary>
/// 输入参数为 站点的描述名 默认是站点描述为 "默认网站"
/// <exception cref="NotFoundWebSiteException">表示没有找到网站</exception>
public static string GetWebSiteNum(string siteName)
{
Regex regex = new Regex(siteName);
string tmpStr;
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);
foreach (DirectoryEntry child in ent.Children)
{
if (child.SchemaClassName == "IIsWebServer")
{
if (child.Properties["ServerBindings"].Value != null)
{
tmpStr = child.Properties["ServerBindings"].Value.ToString();
if (regex.Match(tmpStr).Success)
{
return child.Name;
}
}
if (child.Properties["ServerComment"].Value != null)
{
tmpStr = child.Properties["ServerComment"].Value.ToString();
if (regex.Match(tmpStr).Success)
{
return child.Name;
}
}
}
}
throw new Exception("没有找到我们想要的站点" + siteName);
}
#endregion
获取新网站id的方法#region 获取新网站id的方法
/**//// <summary>
/// 获取网站系统里面可以使用的最小的ID。
/// 这是因为每个网站都需要有一个唯一的编号,而且这个编号越小越好。
/// 这里面的算法经过了测试是没有问题的。
/// </summary>
/// <returns>最小的id</returns>
public static string GetNewWebSiteID()
{
ArrayList list = new ArrayList();
string tmpStr;
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);
foreach (DirectoryEntry child in ent.Children)
{
if (child.SchemaClassName == "IIsWebServer")
{
tmpStr = child.Name.ToString();
list.Add(Convert.ToInt32(tmpStr));
}
}
list.Sort();
int i = 1;
foreach (int j in list)
{
if (i == j)
{
i++;
}
}
return i.ToString();
}
#endregion
设置目录访问权限#region 设置目录访问权限
/**///// <summary>
/// 为创建的临时文件分配权限
/// </summary>
/// <param name="pathname"></param>
/// <param name="username"></param>
/// <param name="power"> </param>
/// <remarks> 用法: addpathPower("指定目录路径", "Everyone", "FullControl"); //Everyone表示用户名 //FullControl为权限类型</remarks>
public string addpathPower(string pathname, string username, string power)
{
DirectoryInfo dirinfo = new DirectoryInfo(pathname);
if ((dirinfo.Attributes & FileAttributes.ReadOnly) != 0)
{
dirinfo.Attributes = FileAttributes.Normal;
}
//取得访问控制列表
DirectorySecurity dirsecurity = dirinfo.GetAccessControl();
try
{
switch (power)
{
case "FullControl":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "ReadOnly":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Read, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "Write":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Write, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "Modify":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Modify, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "ReadAndExecute": //读取和运行
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.ReadAndExecute, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
}
dirsecurity.AddAccessRule(new FileSystemAccessRule("Everyone",FileSystemRights.ReadAndExecute,AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
}
catch (Exception e)
{
return e.Message.ToString();
}
return "true";
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.Collections;
using System.Text.RegularExpressions;
using System.IO;
using System.Security.AccessControl;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;
namespace ClassLibrary
{
public class IISClass
{
UserName,Password,HostName的定义#region UserName,Password,HostName的定义
public static string HostName
{
get
{
return hostName;
}
set
{
hostName = value;
}
}
public static string UserName
{
get
{
return userName;
}
set
{
userName = value;
}
}
public static string Password
{
get
{
return password;
}
set
{
if (UserName.Length <= 1)
{
throw new ArgumentException("还没有指定好用户名。请先指定用户名");
}
password = value;
}
}
public static void RemoteConfig(string hostName, string userName, string password)
{
HostName = hostName;
UserName = userName;
Password = password;
}
private static string hostName = "localhost";
private static string userName = "qf";
private static string password = "qinfei";
#endregion
根据路径构造Entry的方法#region 根据路径构造Entry的方法
/**//// <summary>
/// 根据是否有用户名来判断是否是远程服务器。
/// 然后再构造出不同的DirectoryEntry出来
/// </summary>
/// <param name="entPath">DirectoryEntry的路径</param>
/// <returns>返回的是DirectoryEntry实例</returns>
public static DirectoryEntry GetDirectoryEntry(string entPath)
{
DirectoryEntry ent;
if (UserName == null)
{
ent = new DirectoryEntry(entPath);
}
else
{
ent = new DirectoryEntry(entPath, HostName + "\\" + UserName, Password, AuthenticationTypes.Secure);
//ent = new DirectoryEntry(entPath, UserName, Password, AuthenticationTypes.Secure);
}
return ent;
}
#endregion
添加,删除网站的方法#region 添加,删除网站的方法
public static void CreateNewWebSite(string hostIP, string portNum, string descOfWebSite, string commentOfWebSite, string webPath)
{
if (!EnsureNewSiteEnavaible(hostIP + portNum + descOfWebSite))
{
throw new ArgumentNullException("已经有了这样的网站了。" + Environment.NewLine + hostIP + portNum + descOfWebSite);
}
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry rootEntry = GetDirectoryEntry(entPath);//取得iis路径
string newSiteNum = GetNewWebSiteID(); //取得新网站ID
DirectoryEntry newSiteEntry = rootEntry.Children.Add(newSiteNum, "IIsWebServer"); //增加站点
newSiteEntry.CommitChanges();//保存对区域的更改(这里对站点的更改)
newSiteEntry.Properties["ServerBindings"].Add(":"+portNum+":"); //(hostIP + portNum + descOfWebSite);
newSiteEntry.Properties["ServerComment"].Value= commentOfWebSite ;
newSiteEntry.Properties["AccessRead"].Add(true); //增加 读取权限
// newSiteEntry.Properties["AppFriendlyName"].Add("DefaultAppPool");
// System.DirectoryServices.DirectoryEntry appPoolRoot = new System.DirectoryServices.DirectoryEntry(@"IIS://" + HostName + "/W3SVC/AppPools");
// newSiteEntry.Properties["ApplicationProtection"].Value="vsdapMedium";
newSiteEntry.Properties["DefaultDoc"][0] = "Default.aspx"; //默认文档
newSiteEntry.Properties["AuthNTLM"][0] = true; // 指定集成 Windows 身份验证
newSiteEntry.CommitChanges();
DirectoryEntry vdEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir");
vdEntry.CommitChanges();
vdEntry.Properties["Path"].Value = webPath;
增加站点的应用程序设置#region 增加站点的应用程序设置
vdEntry.Invoke("AppCreate", true);
vdEntry.Properties["AppFriendlyName"].Value = commentOfWebSite;// 友好的显示名称
vdEntry.Properties["AppIsolated"].Value = 2; // 值 0 表示应用程序在进程内运行,值 1 表示进程外,值 2 表示进程池
vdEntry.Properties["AccessScript"][0] = true; // 可执行脚本。执行权限下拉菜单中
vdEntry.Properties["AuthNTLM"][0] = true; // 指定集成 Windows 身份验证
#endregion
vdEntry.CommitChanges();
增加虚拟目录aspnet_client#region 增加虚拟目录aspnet_client
try
{
DirectoryEntry _RootFolder = new DirectoryEntry("IIS://" + HostName + "/W3SVC/" + newSiteNum + "/Root");
DirectoryEntry _VirDir = _RootFolder.Children.Add("aspnet_client", "IIsWebVirtualDir");
_VirDir.Properties["Path"].Value = @"C:\Inetpub\wwwroot\aspnet_client"; //webPath; //设置路径
_VirDir.Invoke("AppCreate", true);
//设置名称
_VirDir.Properties["AppFriendlyName"].Value = "aspnet_client";
_VirDir.Properties["AppIsolated"].Value = 2;
_VirDir.Properties["AccessScript"][0] = true; // 可执行脚本。执行权限下拉菜单中
_VirDir.CommitChanges();//更改目录
_RootFolder.CommitChanges(); //更改根目录
}
catch
{
//MessageBox.Show("共享目录已存在,不进行共享操作!");
}
#endregion
}
/**//// <summary>
/// 删除一个网站。根据网站名称删除。
/// </summary>
/// <param name="siteName">网站名称</param>
public static void DeleteWebSiteByName(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);
string rootPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry rootEntry = GetDirectoryEntry(rootPath);
rootEntry.Children.Remove(siteEntry);
rootEntry.CommitChanges();
}
#endregion
Start和Stop网站的方法#region Start和Stop网站的方法
public static void StartWebSite(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);
siteEntry.Invoke("Start", new object[] { });
}
public static void StopWebSite(string siteName)
{
string siteNum = GetWebSiteNum(siteName);
string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum);
DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath);
siteEntry.Invoke("Stop", new object[] { });
}
#endregion
确认网站是否相同#region 确认网站是否相同
/**//// <summary>
/// 确定一个新的网站与现有的网站没有相同的。
/// 这样防止将非法的数据存放到IIS里面去
/// </summary>
/// <param name="bindStr">网站邦定信息</param>
/// <returns>真为可以创建,假为不可以创建</returns>
public static bool EnsureNewSiteEnavaible(string bindStr)
{
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);
foreach (DirectoryEntry child in ent.Children)
{
if (child.SchemaClassName == "IIsWebServer")
{
if (child.Properties["ServerBindings"].Value != null)
{
if (child.Properties["ServerBindings"].Value.ToString() == bindStr)
{
return false;
}
}
}
}
return true;
}
#endregion
获取一个网站编号//一个输入参数为站点描述#region 获取一个网站编号//一个输入参数为站点描述
/**//// <summary>
/// 输入参数为 站点的描述名 默认是站点描述为 "默认网站"
/// <exception cref="NotFoundWebSiteException">表示没有找到网站</exception>
public static string GetWebSiteNum(string siteName)
{
Regex regex = new Regex(siteName);
string tmpStr;
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);
foreach (DirectoryEntry child in ent.Children)
{
if (child.SchemaClassName == "IIsWebServer")
{
if (child.Properties["ServerBindings"].Value != null)
{
tmpStr = child.Properties["ServerBindings"].Value.ToString();
if (regex.Match(tmpStr).Success)
{
return child.Name;
}
}
if (child.Properties["ServerComment"].Value != null)
{
tmpStr = child.Properties["ServerComment"].Value.ToString();
if (regex.Match(tmpStr).Success)
{
return child.Name;
}
}
}
}
throw new Exception("没有找到我们想要的站点" + siteName);
}
#endregion
获取新网站id的方法#region 获取新网站id的方法
/**//// <summary>
/// 获取网站系统里面可以使用的最小的ID。
/// 这是因为每个网站都需要有一个唯一的编号,而且这个编号越小越好。
/// 这里面的算法经过了测试是没有问题的。
/// </summary>
/// <returns>最小的id</returns>
public static string GetNewWebSiteID()
{
ArrayList list = new ArrayList();
string tmpStr;
string entPath = String.Format("IIS://{0}/w3svc", HostName);
DirectoryEntry ent = GetDirectoryEntry(entPath);
foreach (DirectoryEntry child in ent.Children)
{
if (child.SchemaClassName == "IIsWebServer")
{
tmpStr = child.Name.ToString();
list.Add(Convert.ToInt32(tmpStr));
}
}
list.Sort();
int i = 1;
foreach (int j in list)
{
if (i == j)
{
i++;
}
}
return i.ToString();
}
#endregion
设置目录访问权限#region 设置目录访问权限
/**///// <summary>
/// 为创建的临时文件分配权限
/// </summary>
/// <param name="pathname"></param>
/// <param name="username"></param>
/// <param name="power"> </param>
/// <remarks> 用法: addpathPower("指定目录路径", "Everyone", "FullControl"); //Everyone表示用户名 //FullControl为权限类型</remarks>
public string addpathPower(string pathname, string username, string power)
{
DirectoryInfo dirinfo = new DirectoryInfo(pathname);
if ((dirinfo.Attributes & FileAttributes.ReadOnly) != 0)
{
dirinfo.Attributes = FileAttributes.Normal;
}
//取得访问控制列表
DirectorySecurity dirsecurity = dirinfo.GetAccessControl();
try
{
switch (power)
{
case "FullControl":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "ReadOnly":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Read, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "Write":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Write, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "Modify":
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Modify, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
case "ReadAndExecute": //读取和运行
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.ReadAndExecute, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
break;
}
dirsecurity.AddAccessRule(new FileSystemAccessRule("Everyone",FileSystemRights.ReadAndExecute,AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
}
catch (Exception e)
{
return e.Message.ToString();
}
return "true";
}
#endregion
}
}