简体   繁体   English

在哪里安全地存储来自 Windows 服务的数据?

[英]Where to store data securely from a Windows service?

I'm writing a service using C# that is supposed to run on a Windows platform as the "local system".我正在使用 C# 编写一个服务,该服务应该作为“本地系统”在 Windows 平台上运行。 I can store small amounts of data in the registry, but if I want to store more data in a file, where do I place such file in?我可以在注册表中存储少量数据,但是如果我想在一个文件中存储更多数据,我应该把这样的文件放在哪里? And also how to protect that data from a modification by users with lower access rights?以及如何保护该数据免受访问权限较低的用户的修改?

一般方法是使用ProtectedData类对数据进行加密,然后将它们存储在应用程序可以使用的磁盘上的任何位置(例如,在 LocalApplicationData 特殊文件夹的子文件夹中,您可以使用Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData call) 获取其位置.

Update to previous answer that may save some troubleshooting time to people using this solution (as I don't have enough reputation to comment):更新以前的答案,可能会为使用此解决方案的人节省一些故障排除时间(因为我没有足够的声誉来发表评论):

For Local System Windows service account, Environment.SpecialFolder.LocalApplicationData may also be resolved to C:\\Windows\\SysWOW64\\config\\systemprofile\\AppData\\Local instead of C:\\Windows\\System32\\Config\\SystemProfile\\AppData\\Local .对于本地系统 Windows 服务帐户, Environment.SpecialFolder.LocalApplicationData也可以解析为C:\\Windows\\SysWOW64\\config\\systemprofile\\AppData\\Local而不是C:\\Windows\\System32\\Config\\SystemProfile\\AppData\\Local

Using the already mentioned CommonApplicationData instead of LocalApplicationData does not bring this issue.使用已经提到的 CommonApplicationData 而不是 LocalApplicationData 不会带来这个问题。

Information source: https://www.jamescrowley.net/2014/02/24/appdata-location-when-running-under-system-user-account/信息来源: https : //www.jamescrowley.net/2014/02/24/appdata-location-when-running-under-system-user-account/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM