我一直在测试我的应用程序以查看它在由非管理用户运行时的运行情况,并且发现文件处理存在问题。如果文件是由管理员用户创建的,则在尝试覆盖文件时出现 UnauthorizedAccessException。
写出文件时,我首先将文件创建为 .tmp 文件,然后使用 File.Copy 覆盖原始文件。.tmp 文件被创建,但 File.Copy 失败。我的文件被写入公共目录(XP 中的“C:\Documents and Settings\All Users\Application Data”)。
我该怎么做才能让所有用户都可以完全控制应用程序文件?
我发现了这个:
System.Security.AccessControl.DirectorySecurity sec =
System.IO.Directory.GetAccessControl ( directory );
FileSystemAccessRule accRule = new FileSystemAccessRule ( Globals.userIdentity,
FileSystemRights.FullControl, AccessControlType.Allow );
sec.AddAccessRule ( accRule );
对所有文件所在的目录执行上述操作会解决这个问题吗?还是我必须对每个文件做些什么?如果是这样,那是什么东西?
编辑:
非管理员用户不能修改管理员用户创建的文件。情况不妙。我需要所有用户都可以编辑所有文件。最初创建文件时是否可以设置某种权限来授予此权限?