文件夹权限设置无效

hrangelet 2014-12-09 11:58:03
功能需求:先从远程下载一个zip压塑包,然后解压文件夹。把解压后的文件分别复制到不同的文件夹中。
问题:复制时出错,对“******”路径的访问被拒绝,请检查文件夹是否是只读。
网上查找不少相关问题,一一对其方式解决,全部无结果,请问有没有遇到过此问题并且解决的。求方法,感谢!

1、已试过文件夹创建之后给它添加完全控制权限,发现并没有添加成功,而项目并不报错。(账户:CREATOR OWNER)
2、直接修改我的电脑中刚才下载后解压的路径,给CREATOR OWNER添加权限,操作结果:无效。打勾后并没有赋予权限。网上各种解决方案都已经尝试过。无法解决


系统:VS2012+IIS+SQL2008
...全文
694 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-12-10
  • 打赏
  • 举报
回复
引用 24 楼 liu900713 的回复:
[quote=引用 22 楼 Z65443344 的回复:] 网站权限很麻烦的,你需要给ASP.NET程序权限,让ASP.NET程序能访问文件夹,还要给network权限,还要给everyone权限 总之我每次发布网站,基本都是看样子差不多的都给了权限,我现在也没弄清楚到底需要哪几个用户给权限就足够了
看你这么多回帖,今天发现还有你不知道的东西 [/quote] 我不知道的东西多了 逛论坛也是看看别人都遇到了哪些我想都没想过的问题,学习一些新东西 难不成我喜欢教书?
沪下九头鸟 2014-12-10
  • 打赏
  • 举报
回复
引用 22 楼 Z65443344 的回复:
网站权限很麻烦的,你需要给ASP.NET程序权限,让ASP.NET程序能访问文件夹,还要给network权限,还要给everyone权限 总之我每次发布网站,基本都是看样子差不多的都给了权限,我现在也没弄清楚到底需要哪几个用户给权限就足够了
看你这么多回帖,今天发现还有你不知道的东西
hrangelet 2014-12-09
  • 打赏
  • 举报
回复
hrangelet 2014-12-09
  • 打赏
  • 举报
回复


hrangelet 2014-12-09
  • 打赏
  • 举报
回复
对了,操作系统是Windows 7 ,个人也在其他XP机器上尝试过。并没有区别!


於黾 2014-12-09
  • 打赏
  • 举报
回复
引用 21 楼 dongxinxi 的回复:
[quote=引用 18 楼 hrangelet 的回复:] 能加入everyone,但是权限赋予好像并没有成功,只能手动。而手动给了权限,copy也错误!
因为你加的角色就搞错了,web(IIS)使用的匿名帐户是ASPNET或者IIS_User,根本就不是你加的什么Owner 尽量不要给everyone加权限,你可以新建个用户,对这个用户专门设置权限,也可以直接用匿名帐户[/quote] 对的,ASPNET和IIS_USER,我基本是见到含有IIS的就都给权限
於黾 2014-12-09
  • 打赏
  • 举报
回复
网站权限很麻烦的,你需要给ASP.NET程序权限,让ASP.NET程序能访问文件夹,还要给network权限,还要给everyone权限 总之我每次发布网站,基本都是看样子差不多的都给了权限,我现在也没弄清楚到底需要哪几个用户给权限就足够了
  • 打赏
  • 举报
回复
引用 18 楼 hrangelet 的回复:
能加入everyone,但是权限赋予好像并没有成功,只能手动。而手动给了权限,copy也错误!
因为你加的角色就搞错了,web(IIS)使用的匿名帐户是ASPNET或者IIS_User,根本就不是你加的什么Owner 尽量不要给everyone加权限,你可以新建个用户,对这个用户专门设置权限,也可以直接用匿名帐户
geyewei 2014-12-09
  • 打赏
  • 举报
回复
还有,如果是服务器端访问网站目录的话,那么在代码中也不需要那些设置权限的处理了。
geyewei 2014-12-09
  • 打赏
  • 举报
回复
如果你的代码是运行在网站的服务器端的话,那么请查看对比一下有问题的文件夹和它的网站第一层目录的文件夹权限,文件夹权限那里加上跟IIS有关的用户吧。
hrangelet 2014-12-09
  • 打赏
  • 举报
回复
引用 15 楼 geyewei 的回复:
[quote=引用 12 楼 hrangelet 的回复:] [quote=引用 10 楼 geyewei 的回复:] 建议你用管理员账号登陆到Win7,然后看看能不能修改那个文件夹的访问属性。如果能的话,修改成可以任意人访问,看看你的程序执行起来还会出错吗?
是用的管理员帐号登录的,直接修改文件夹权限某些用户也修改不了。如:creator owner,这个怎么改都无效。费解中...[/quote] 那么就在管理员账号下看看能不能删除掉 creator owner,而加入everyone吧,如果不能的话,那么就是管理员权限还是不够高,曾经在网上看过一些提高Win7下的Adminstrarors的权限的文章,可能会对你有帮助吧。[/quote] 能加入everyone,但是权限赋予好像并没有成功,只能手动。而手动给了权限,copy也错误!
hrangelet 2014-12-09
  • 打赏
  • 举报
回复
引用 14 楼 Z65443344 的回复:
VS2012+IIS+SQL2008 你到底是winform程序还是网站 web程序访问非网站目录好像会有问题哎
是网站,web程序,但访问的是网站目录。
geyewei 2014-12-09
  • 打赏
  • 举报
回复
引用 14 楼 Z65443344 的回复:
VS2012+IIS+SQL2008 你到底是winform程序还是网站 web程序访问非网站目录好像会有问题哎
geyewei 2014-12-09
  • 打赏
  • 举报
回复
引用 12 楼 hrangelet 的回复:
[quote=引用 10 楼 geyewei 的回复:] 建议你用管理员账号登陆到Win7,然后看看能不能修改那个文件夹的访问属性。如果能的话,修改成可以任意人访问,看看你的程序执行起来还会出错吗?
是用的管理员帐号登录的,直接修改文件夹权限某些用户也修改不了。如:creator owner,这个怎么改都无效。费解中...[/quote] 那么就在管理员账号下看看能不能删除掉 creator owner,而加入everyone吧,如果不能的话,那么就是管理员权限还是不够高,曾经在网上看过一些提高Win7下的Adminstrarors的权限的文章,可能会对你有帮助吧。
於黾 2014-12-09
  • 打赏
  • 举报
回复
VS2012+IIS+SQL2008 你到底是winform程序还是网站 web程序访问非网站目录好像会有问题哎
hrangelet 2014-12-09
  • 打赏
  • 举报
回复
引用 11 楼 dongxinxi 的回复:

public static bool SetFolderACL(
String folderPath,
String userName,
FileSystemRights rights,
AccessControlType allowOrDeny,
InheritanceFlags inherits,
PropagationFlags propagateToChildren,
AccessControlModification addResetOrRemove)
{

bool ret = false;
try
{
var folder = new DirectoryInfo(folderPath);
var dSecurity = folder.GetAccessControl(AccessControlSections.All);
var accRule = new FileSystemAccessRule(userName, rights, inherits, propagateToChildren, allowOrDeny);
dSecurity.ModifyAccessRule(addResetOrRemove, accRule, out ret);
folder.SetAccessControl(dSecurity);
}
catch (Exception exp)
{
Trace.Write(Trace.LogType.Fault, "Set Folder ACL", folderPath + "\t" + exp.Message);
}
return ret;
}

public static bool ResetFolderModifiable(String direcotry, string userName)
{
return SetFolderACL(direcotry, userName,
FileSystemRights.CreateFiles | FileSystemRights.Read | FileSystemRights.Write,
AccessControlType.Allow,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlModification.Reset);
}

注意这两个参数
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,

username可以用组名(everyone)或者当前用户名


用过everyone和当前用户名尝试过,依旧报错,拒绝访问。如图:
hrangelet 2014-12-09
  • 打赏
  • 举报
回复
引用 10 楼 geyewei 的回复:
建议你用管理员账号登陆到Win7,然后看看能不能修改那个文件夹的访问属性。如果能的话,修改成可以任意人访问,看看你的程序执行起来还会出错吗?
是用的管理员帐号登录的,直接修改文件夹权限某些用户也修改不了。如:creator owner,这个怎么改都无效。费解中...
  • 打赏
  • 举报
回复

public static bool SetFolderACL(
            String folderPath,
            String userName,
            FileSystemRights rights,
            AccessControlType allowOrDeny,
            InheritanceFlags inherits,
            PropagationFlags propagateToChildren,
            AccessControlModification addResetOrRemove)
        {

            bool ret = false;
            try
            {
                var folder = new DirectoryInfo(folderPath);
                var dSecurity = folder.GetAccessControl(AccessControlSections.All);
                var accRule = new FileSystemAccessRule(userName, rights, inherits, propagateToChildren, allowOrDeny);
                dSecurity.ModifyAccessRule(addResetOrRemove, accRule, out ret);
                folder.SetAccessControl(dSecurity);
            }
            catch (Exception exp)
            {
                Trace.Write(Trace.LogType.Fault, "Set Folder ACL", folderPath + "\t" + exp.Message);
            }
            return ret;
        }

        public static bool ResetFolderModifiable(String direcotry, string userName)
        {
            return SetFolderACL(direcotry, userName,
                FileSystemRights.CreateFiles | FileSystemRights.Read | FileSystemRights.Write,
                AccessControlType.Allow,
                InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
                PropagationFlags.None,
                AccessControlModification.Reset);
        }
注意这两个参数 InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, username可以用组名(everyone)或者当前用户名
geyewei 2014-12-09
  • 打赏
  • 举报
回复
建议你用管理员账号登陆到Win7,然后看看能不能修改那个文件夹的访问属性。如果能的话,修改成可以任意人访问,看看你的程序执行起来还会出错吗?
hrangelet 2014-12-09
  • 打赏
  • 举报
回复
引用 3 楼 hrangelet 的回复:
已经是管理员权限运行的。如上图
加载更多回复(5)

111,089

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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