这是我的方案,
我有一个Outlook加载项,我通过这个加载项将一些信息写入一个公共文件。当我创建一个可安装的时,我将公共文件保存在“所有用户”(Common Application Data Folder)文件夹下。当我在XP上安装这个加载项时,它工作得非常好,没有许可问题。
现在,当我将此应用程序移动到Windows 7时,我收到了一些文件访问权限异常。参考一些博客,我在“所有用户”下添加了特定于应用程序的文件夹。在此之后我也无法写入此文件。
还有什么我需要做的,通过它我可以写入此文件。
我已经阅读了一些关于UAC的博客,但是,我没有清楚地了解它对外接程序的使用。
答案 0 :(得分:1)
默认情况下,标准用户没有对公共应用程序数据文件夹的写入权限。如果您希望允许用户在那里写,您应该创建一个子文件夹并应用适当的ACL。这是安装的一部分,因为那时您有足够的权限来创建ACL。
另一种选择是基于每个用户存储这些设置,从而避免安全问题。
答案 1 :(得分:0)
要为文件添加特定权限,我使用我为此创建的帮助扩展函数:(您需要正确的权限才能对文件执行此操作)
public static void AddAccessEveryone(this FileInfo file, FileSystemRights rights, AccessControlType accessType)
{
FileSecurity access = file.GetAccessControl();
SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
access.AddAccessRule(new FileSystemAccessRule(everyone, rights, accessType));
file.SetAccessControl(access);
}
你这样称呼它:
file.AddAccessEveryone(FileSystemRights.Read | FileSystemRights.Write, AccessControlType.Allow);
您必须将引用System.ServiceModel
添加到项目中。你必须在创建文件后调用它,在此之前调用它没有任何好处。