文件与非管理用户处理(File handling with non-administrative u

2019-09-29 01:55发布

我一直在测试我的应用程序,看看当由非管理用户身份运行,以及它如何工作的,我已经发现了与文件处理的问题。 试图覆盖文件时,我得到一个UnauthorizedAccessException,如果该文件是由智优和用户创建的。

当写出来的文件我首先创建的文件作为.tmp文件,然后使用File.Copy覆盖原来的。 .tmp文件获取创建,但File.Copy失败。 我的文件写入到一个公共目录(“C:\ Documents和Settings \所有用户\应用数据”在XP)。

我能做些什么,使所有用户都能获得应用程序文件的完全控制权?

我发现这一点:

        System.Security.AccessControl.DirectorySecurity sec =  
                                System.IO.Directory.GetAccessControl ( directory );  
        FileSystemAccessRule accRule = new FileSystemAccessRule ( Globals.userIdentity,  
             FileSystemRights.FullControl, AccessControlType.Allow );  
        sec.AddAccessRule ( accRule );  

会做以上所有文件都位于解决这个问题的目录? 或者将我必须做些什么,以每个文件? 如果是的话那是什么东西?

编辑:

非管理员用户无法修改由管理员用户创建的文件。 不是很好。 我需要的所有文件,所有用户可编辑。 是不是有某种权限,可以在文件最初创建,将授予该设置?

Answer 1:

我刚刚检查了所有用户\应用数据目录的权限。 “用户”和“超级用户”的ACL没有“删除子文件夹及文件”的权限。

他们可以删除自己的文件,因为“CREATOR OWNER” ACL具有完全控制。

至于如何解决这个问题,你可以给每个人的所有访问,但更好的办法是将授予“用户”和“超级用户”的ACL您应用的AppData目录“删除子文件夹及文件”的权限。

或者,你可以分配“删除”,并在创建时“修改”文件本身的“用户”和“超级用户”的权限。



Answer 2:

此代码将使用户完全访问权限的文件夹,但是,这可能对安全再次失败。

最好的办法,以确保您的应用程序可以随时存储信息是低谷的IsolatedStorage。 但是,如果你需要你的应用程序之外访问您的文件,那么这是不是最好的解决方案。



Answer 3:

怎么样,如果你使用类似的代码给大家完全访问文件时,它被创建后? 如果我理解正确的文件将始终与您的应用程序创建,对不对? 然后创建摆在首位文件的用户也将有权调整为文件的安全设置。 然后,它只是一个曾经被创建,所有用户都能够替换该文件以后公权设置到文件的问题。



文章来源: File handling with non-administrative user