我可以在哪里放置除本地计算机注册表之外的通用用户数据,而无需管理权限
本文关键字:数据 用户数 用户 权限 管理权 管理 在哪里 注册表 计算机 我可以 | 更新日期: 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 方法完成。
然后,在安装完成后,运行应用程序将不需要管理权限。应用程序只需保存到公共应用程序数据文件夹的自己的子目录中,其安装程序已确保所有用户都具有读/写访问权限。