在注册表-localmachine以外的Windows中,我可以在哪里放置可供所有用户访问的常用用户数据。
我需要这样做没有请求提升管理员权利
答案 0 :(得分:1)
您可以将其存储在Application data文件夹中。您可以从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();
}
}
答案 1 :(得分:1)
默认情况下,没有此类位置可用。常规(即,非管理用户)没有必要的权限来处理属于其他用户的系统文件或文件 - 这将是一个安全问题。因此,他们无法写一个普通的" 。目录
如果您需要所有用户都能够写入某种类型的公共区域,则需要自行设置。通常,这是由安装程序应用程序完成的。安装程序应用程序需要请求提升,以便它具有管理权限,以便写入受限文件夹并更改安全权限。如果您使用标准安装程序实用程序,那么这通常是内置功能。如果您自己编写,则可以通过嵌入level
设置为requireElevation
的清单来安排管理权限(搜索Stack Overflow以获取详细信息)。
安装程序将创建公共应用程序数据文件夹的子目录(.NET世界中的枚举值Environment.SpecialFolder.CommonApplicationData
)供您的应用程序使用。当然,默认情况下,该子目录将继承其父文件夹的限制,因此安装程序还需要在该子目录上显式设置ACL(访问控制列表)以授予所有用户写入权限。这可以使用Directory.SetAccessControl method在.NET Framework中完成。
然后,在安装完成后,运行应用程序将不需要 的管理权限。应用程序可以保存到自己的公共应用程序数据文件夹的子目录中,其安装程序确保所有用户都具有读/写访问权限。