1

这是我的场景,

我有一个 Outlook 插件,我正在通过这个插件将一些信息写入一个公共文件。当我创建一个可安装文件时,我将通用文件保存在“所有用户”(通用应用程序数据文件夹)文件夹下。当我在 XP 上安装这个插件时,它工作得非常好,没有权限问题。

现在,当我将此应用程序移动到 Windows 7 时,我得到了一些文件访问权限异常。参考一些博客,我在“所有用户”下添加了特定于应用程序的文件夹。在此之后我也无法写入该文件。

还有什么我需要做的,通过它我可以写入这个文件。

我已经阅读了一些关于 UAC 的博客,但是,我并没有清楚地了解它在 Add-in 中的用途。

4

2 回答 2

1

默认情况下,标准用户没有通用应用数据文件夹的写入权限。如果您希望允许您的用户在那里写入,您应该创建一个子文件夹并应用适当的 ACL。在安装过程中执行此操作,因为此时您有足够的权限来创建 ACL。

另一种选择是按用户存储这些设置,从而避免安全问题。

于 2011-12-05T05:59:14.357 回答
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项目的引用。您还必须在文件创建后调用它,在此之前调用它没有任何好处。

于 2011-12-09T23:12:02.723 回答