我可以在哪里放置除本地计算机注册表之外的通用用户数据,而无需管理权限

本文关键字:数据 用户数 用户 权限 管理权 管理 在哪里 注册表 计算机 我可以 | 更新日期: 2023-09-27 18:31:27

在注册表以外的Windows中 - 本地机器,我可以在哪里放置所有用户都可以访问的公共用户数据。

我需要在不请求提升管理员权限的情况下执行此操作

我可以在哪里放置除本地计算机注册表之外的通用用户数据,而无需管理权限

您可以将其存储在应用程序数据文件夹中。 您可以从Envorinment获得:

var appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments);

若要确定是否可以在没有管理员权限的情况下访问该文件夹,请在没有管理员权限的情况下运行 Visual Studio,并查看此代码是否成功执行。

   class Program
    {
        static void Main(string[] args)
        {
            var folder = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments);
            var file = Path.Combine(folder, "testfile.txt");
            File.WriteAllText(file, " Test Settings");
            Console.ReadLine();
        }
    }

默认情况下没有这样的位置可用。常规用户(非管理用户)没有必要的权限来处理系统文件或属于其他用户的文件,这将是一个安全问题。因此,它们将无法写入"公共"目录。

如果您需要所有用户都能够写入某种类型的公共区域,则需要自己进行设置。通常,这是由安装程序应用程序完成的。安装程序应用程序需要请求提升,以便具有管理权限,以便写入受限制的文件夹并更改安全权限。如果您使用的是标准安装程序实用程序,则这通常是内置功能。如果您正在编写自己的清单,则可以通过嵌入level设置为 requireElevation 的清单来安排它具有管理权限(搜索 Stack Overflow 了解详细信息)。

安装程序将创建公共应用程序数据文件夹(.NET 世界中Environment.SpecialFolder.CommonApplicationData枚举值)的子目录,供应用程序使用。当然,默认情况下,该子目录将继承其父文件夹的限制,因此安装程序还需要在该子目录上显式设置 ACL(访问控制列表)以授予所有用户写入访问权限。这可以在 .NET Framework 中使用 Directory.SetAccessControl 方法完成。

然后,在安装完成后,运行应用程序将不需要管理权限。应用程序只需保存到公共应用程序数据文件夹的自己的子目录中,其安装程序已确保所有用户都具有读/写访问权限。