我开发了一个.NET Windows服务(在VS2010中),需要:
从Windows XP SP3开始,我的服务必须适用于所有Windows(PC)操作系统。
问题:我应该为我的服务选择哪个服务帐户?
通常情况下,我会使用“ LocalService ”或“ NetworkService ”,但这些都不会自行授予所有必需的权限。
我应该使用“ LocalSystem ”帐户吗?或者,我是否应该仅为我的服务使用创建一个完整的单独帐户(这应该在安装期间自动完成)?
现在我使用“ NetworkService ”帐户,只是在安装过程中将其添加到adimistrators组,工作正常。但我认为这种方法破坏了有限服务帐户的整体想法,从而带来了安全风险 - 你不同意吗?
答案 0 :(得分:1)
您不应该使用LOCALSYSTEM
。这有太多的力量,所有最佳实践都告诉你不要使用它。
在我看来,您应该创建一个具有适当权限的本地用户作为安装的一部分。这是服务器/数据库产品的一种常见做法。
答案 1 :(得分:0)
听起来你需要分开你的要求。
您提到需要访问其他计算机上的共享,但您还提到将安装此服务的计算机不一定是该域的一部分。
让服务在授予您适当LOCAL权限的用户帐户下执行。然后使用某种类型的替代用户帐户访问您的服务所知道的相应共享,并在需要时进行模拟。
现在,关于在ROOT中编写和创建文件,这将是有趣的。如果启用了UAC,您的服务将需要完全管理权限才能在Windows 7机器上执行此操作。其中,假设在您不直接控制的机器上可能是安全的。要么消除这个要求,要么你必须承认你的服务存在安全风险。