代码之家  ›  专栏  ›  技术社区  ›  Jon Limjap

如何创建文件夹并同时对其指定访问权限?

  •  0
  • Jon Limjap  · 技术社区  · 17 年前

    我有一个windows窗体应用程序,它作为ASP.NET web应用程序的一种管理模块。web应用程序为多个国家/地区提供服务,并在将新国家/地区添加到应用程序数据时创建文件夹。

    不幸的是,在新添加的国家/地区,当我尝试在文件夹中写入文件时,web应用程序遇到异常:

    System.UnauthorizedAccessException: Access to the path 'C:\...' is denied.
    

    如何在创建文件夹时授予默认IIS用户权限?

    System.IO.Directory.CreateDirectory(string path, DirectorySecurity directorySecurity)
    

    应该这样做,但我不明白如何在服务器上指定登录名 DirectorySecurity

    2 回复  |  直到 17 年前
        1
  •  3
  •   tvanfosson    17 年前

    sysname\iis_wpg )到要在其中创建新目录的父目录。确保您已设置要应用于的权限 this folder, subfolders, and files ,则将继承您创建的新文件夹的权限,而无需专门应用这些权限。与其对所有App_数据都这样做,我建议创建一个特定的子目录,只授予该子目录的权限。如果您有多个应用程序在该框上运行,您可能希望为该应用程序创建一个新用户以其身份运行,更改工作进程组的id,并仅向该特定用户授予权限。

        2
  •  -1
  •   Jon Limjap    17 年前

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
                DirectoryInfo info = new DirectoryInfo(path);
                DirectorySecurity security = info.GetAccessControl();
    
                security.AddAccessRule(new FileSystemAccessRule(logonName, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
                security.AddAccessRule(new FileSystemAccessRule(logonName, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
    
                info.SetAccessControl(security); 
            }