我正在使用 C# 编写一个服务,该服务应该在 Windows 平台上作为“本地系统”运行。我可以在注册表中存储少量数据,但是如果我想在一个文件中存储更多数据,我应该将这些文件放在哪里?以及如何保护这些数据不被访问权限较低的用户修改?
2 回答
一般的做法是使用ProtectedData类对数据进行加密,然后将它们存储在磁盘上应用程序可以存储的任何位置(例如,在 LocalApplicationData 特殊文件夹的子文件夹中,您可以通过Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData
调用获取其位置)。
更新到以前的答案可能会为使用此解决方案的人节省一些故障排除时间(因为我没有足够的声誉来发表评论):
对于本地系统 Windows 服务帐户,Environment.SpecialFolder.LocalApplicationData
也可以解析为
C:\Windows\SysWOW64\config\systemprofile\AppData\Local
而不是C:\Windows\System32\Config\SystemProfile\AppData\Local
.
使用已经提到的 CommonApplicationData 而不是 LocalApplicationData 不会带来这个问题。
信息来源:https ://www.jamescrowley.net/2014/02/24/appdata-location-when-running-under-system-user-account/