web应用程序部署时文件夹的权限设置问题?

鼓手 2005-08-24 08:23:25
在部署ASP。NET WEB 应用程序时,怎么在部署时自动设置web文件夹的权限问题?
比如:有一个用来保存上传文件的文件夹,怎么在部署时自动设置,不在用手工??
...全文
249 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nik_Amis 2005-09-06
  • 打赏
  • 举报
回复
up
zeusvenus 2005-08-25
  • 打赏
  • 举报
回复
脚本控制很麻烦,还不如在windows里设置下比较简单。
鼓手 2005-08-25
  • 打赏
  • 举报
回复
就是想学下思路和原理,谢谢各位指点!
fanweiwei 2005-08-25
  • 打赏
  • 举报
回复
UP
smile9961 2005-08-25
  • 打赏
  • 举报
回复
脚本控制很麻烦,还不如在windows里设置下比较简单。
________________________________________________
正是!这样很方便,直观.
cityhunter172 2005-08-24
  • 打赏
  • 举报
回复
可以通过 .cs 来控获取与设置文件夹的权限,但是非常麻烦
下列是下载地址

http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=E6098575-DDA0-48B8-9ABF-E0705AF065D9

以下是摘自 TheAres(班门斧) 的代码

如何检测一个目录的NTFS文件权限?

可以用WMI来实现,比如下面的代码:


using System;
using System.Management;
using System.Collections;

class Tester
{

public static void Main()
{
try
{
ManagementPath path = new ManagementPath( );
path.Server = ".";
path.NamespacePath = @"root\cimv2";
path.RelativePath = @"Win32_LogicalFileSecuritySetting.Path='c:\\tmp'"; // using tmp as folder name

ManagementObject lfs = new ManagementObject(path);
// Dump all trustees (this includes owner)
foreach (ManagementBaseObject b in lfs.GetRelated())
Console.WriteLine("Trustee: {0} \t SID [{1}]", b["AccountName"], b["SID"]);
// Get the security descriptor for this object
ManagementBaseObject outParams = lfs.InvokeMethod("GetSecurityDescriptor", null, null);

if (((uint)(outParams.Properties["ReturnValue"].Value)) == 0)
{
ManagementBaseObject Descriptor = ((ManagementBaseObject)(outParams.Properties["Descriptor"].Value));
ManagementBaseObject[] DaclObject = ((ManagementBaseObject[])(Descriptor.Properties["Dacl"].Value));
DumpACEs(DaclObject);
ManagementBaseObject OwnerObject = ((ManagementBaseObject)(Descriptor.Properties["Owner"].Value));
DumpOwnerProperties(OwnerObject.Properties); // Show owner properies
}
}
catch(Exception e)
{
Console.WriteLine(e);
Console.ReadLine();
}
}

static void DumpACEs(ManagementBaseObject[] DaclObject)
{
// ACE masks see: winnt.h
string[] filedesc = {"FILE_READ_DATA", "FILE_WRITE_DATA", "FILE_APPEND_DATA", "FILE_READ_EA",
"FILE_WRITE_EA", "FILE_EXECUTE", "FILE_DELETE_CHILD", "FILE_READ_ATTRIBUTES",
"FILE_WRITE_ATTRIBUTES", " ", " ", " ",
" ", " ", " ", " ",
"DELETE ", "READ_CONTROL", "WRITE_DAC", "WRITE_OWNER",
"SYNCHRONIZE ", " ", " "," ",
"ACCESS_SYSTEM_SECURITY", "MAXIMUM_ALLOWED", " "," ",
"GENERIC_ALL", "GENERIC_EXECUTE", "GENERIC_WRITE","GENERIC_READ"};

foreach(ManagementBaseObject mbo in DaclObject)
{
Console.WriteLine("-------------------------------------------------");
Console.WriteLine("mask: {0:X} - aceflags: {1} - acetype: {2}", mbo["AccessMask"], mbo["AceFlags"], mbo["AceType"]);
// Access allowed/denied ACE
if(mbo["AceType"].ToString() == "1")
Console.WriteLine("DENIED ACE TYPE");
else
Console.WriteLine("ALLOWED ACE TYPE");
// Dump trustees
ManagementBaseObject Trustee = ((ManagementBaseObject)(mbo["Trustee"]));
Console.WriteLine("Name: {0} - Domain: {1} - SID {2}\n",
Trustee.Properties["Name"].Value,
Trustee.Properties["Domain"].Value,
Trustee.Properties["SIDString"].Value);
// Dump ACE mask in readable form
UInt32 mask = (UInt32)mbo["AccessMask"];
int[] m = {(int)mask};
BitArray ba = new BitArray(m);
int i = 0;
IEnumerator baEnum = ba.GetEnumerator();
while ( baEnum.MoveNext() )
{
if((bool)baEnum.Current)
Console.WriteLine( "\t[{0}]", filedesc[i]);
i++;
}
}
}

static void DumpOwnerProperties(PropertyDataCollection Owner)
{
Console.WriteLine("=============== Owner Properties ========================");
Console.WriteLine();
Console.WriteLine("Domain {0} \tName {1}",Owner["Domain"].Value, Owner["Name"].Value);
Console.WriteLine("SID \t{0}",Owner["SidString"].Value);
Console.ReadLine();
}
}
qileroro 2005-08-24
  • 打赏
  • 举报
回复
没见过代码控制的,顶一下...高手来~
hackate 2005-08-24
  • 打赏
  • 举报
回复
你如果是买的服务器商的空间的话,一般他们都会给你一个文件夹是你的站点目录,在这里这个目录里的权限你都可以控制,但是控制不到别人的文件夹而已,就是说在这个文件夹里的权限属于你的,你就可以做任何事.

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧