试了无数方法都不用!各种方法都是只能维持一会正常!在window/temp 和Temporary ASP.NET Files 加上 Network service 和 asp.net的权限! 正常了一会之后又不行!查看了目录发现之前加的Network service和asp.net用户权限都没有了! 回到之前一样!现在也找不到原因为何给目录加了权限运行一段时间后权限就会被删除!现在这个问题一直解决不了! 各位大神帮忙解决一下! 实在是很急!
调试欢乐多
另外,编译成单一的dll文件发布比较好
很明显 是安全问题哦。
一般是被 360啊等等 给你恢复了, 或者系统安全过搞
那就用代码重写指定文件夹权限(或者获取到后重新写之)using System;
using System.Collections;
using System.IO;
using System.Security.AccessControl;
static class Tester
{ public static void Main()
{
try
{
string filename = @"f:\k"; //目标目录
string account = @"Administrator";//用户名
string userrights = @"RW";//权限字符串,自己定义的
AddDirectorySecurity(filename, account, userrights);
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e);
Console.ReadLine();
}
} static public void AddDirectorySecurity(string FileName, string Account, string UserRights)
{
FileSystemRights Rights = new FileSystemRights(); if (UserRights.IndexOf("R") >= 0)
{
Rights = Rights | FileSystemRights.Read;
}
if (UserRights.IndexOf("C") >= 0)
{
Rights = Rights | FileSystemRights.ChangePermissions;
}
if (UserRights.IndexOf("F") >= 0)
{
Rights = Rights | FileSystemRights.FullControl;
}
if (UserRights.IndexOf("W") >= 0)
{
Rights = Rights | FileSystemRights.Write;
} bool ok;
DirectoryInfo dInfo = new DirectoryInfo(FileName);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
InheritanceFlags iFlags = new InheritanceFlags();
iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
FileSystemAccessRule AccessRule2 = new FileSystemAccessRule(Account, Rights, iFlags, PropagationFlags.None, AccessControlType.Allow);
dSecurity.ModifyAccessRule(AccessControlModification.Add, AccessRule2, out ok); dInfo.SetAccessControl(dSecurity); //列出目标目录所具有的权限
DirectorySecurity sec = Directory.GetAccessControl(FileName, AccessControlSections.All);
foreach (FileSystemAccessRule rule in sec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
Console.WriteLine("----------------------------------");
Console.WriteLine(rule.IdentityReference.Value);
if ((rule.FileSystemRights & FileSystemRights.Read) != 0)
Console.WriteLine(rule.FileSystemRights.ToString()); }
Console.Read();
}}