我有一个应用程序是安装在Vista的PC上的用户提升的用户权限(和管理员通过UAC提升提示)。
安装程序将一些文件写入%APPDATA%文件夹中的文件夹。
当用户(没有提升的用户权限)运行应用程序时,无法访问共享%APPDATA% (Vista中的c:\ProgramData)中的文件(和创建的文件夹)。
这些文件由第三方组件编写。如果在没有提升用户权限的情况下使用组件,则文件可访问(和可写)。
我曾尝试更改文件的访问权限,但没有成功。
有没有办法让文件的默认访问权限对每个人都是完全控制的?
发布于 2010-09-15 06:05:26
我使用here中描述的方法创建了一个子文件夹i c:\ProgramData,从而解决了这个问题
bool modified;
DirectoryInfo directoryInfo = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyFolder");
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
FileSystemAccessRule rule = new FileSystemAccessRule(
securityIdentifier,
FileSystemRights.Write |
FileSystemRights.ReadAndExecute |
FileSystemRights.Modify,
InheritanceFlags.ContainerInherit |
InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
AccessControlType.Allow);
directorySecurity.ModifyAccessRule(AccessControlModification.Add, rule, out modified);
directoryInfo.SetAccessControl(directorySecurity);规则由子文件夹和文件继承。在"MyFolder“中创建的所有文件和文件夹对Users组都是可写的。
发布于 2010-09-08 07:06:29
首先,您确定您的安装程序为所有用户而不是一个用户设置了AppData吗?如果安装程序在某个用户的AppData文件夹下生成文件夹,那么通常您在系统上拥有多少权限都无关紧要,除非您是该用户,否则无法访问该文件夹。
其次,听起来您的安装程序是代表执行安装的用户写入文件夹和/或文件,该用户将是管理员,因此需要更高的权限。有一种方法可以获取和更改文件夹和/或文件的ACL权限。也许你正在尝试的代码片段可能会对你有所帮助。
https://stackoverflow.com/questions/3662777
复制相似问题