我正在使用C#编写服务,该服务应该在Windows平台上作为“本地系统”运行。我可以在注册表中存储少量数据,但如果我想在文件中存储更多数据,我在哪里放置这样的文件?还有如何保护这些数据免受具有较低访问权限的用户的修改?
答案 0 :(得分:6)
一般方法是使用ProtectedData类来加密数据,然后将它们存储在应用程序所在的磁盘上的任何位置(例如,在LocalApplicationData特殊文件夹的子文件夹中,您可以使用{{1}获取其位置打电话)。
答案 1 :(得分:1)
更新为先前的答案,可能会节省使用该解决方案的人员的疑难解答时间(因为我没有足够的声誉来发表评论):
对于本地系统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/