在看爬虫程序时,遇到了System.ServiceProcess.ServiceAccount.LocalSystem这样的代码,就查了查:
看了看在ServiecAccount中的定义
using System;
namespace System.ServiceProcess
{
// 摘要:
// 指定服务的安全上下文,安全上下文定义其登录类型。
public enum ServiceAccount
{
// 摘要:
// 充当本地计算机上非特权用户的帐户,该帐户将匿名凭据提供给所有远程服务器。
LocalService = 0,
//
// 摘要:
// 提供广泛的本地特权的帐户,该帐户将计算机的凭据提供给所有远程服务器。
NetworkService = 1,
//
// 摘要:
// 具有高特权级别的帐户。
LocalSystem = 2,
//
// 摘要:
// 由网络上特定的用户定义的帐户。如果为 System.ServiceProcess.ServiceProcessInstaller.Account
// 成员指定 User,则会使系统在安装服务时提示输入有效的用户名和密码,除非您为 System.ServiceProcess.ServiceProcessInstaller
// 实例的 System.ServiceProcess.ServiceProcessInstaller.Username 和 System.ServiceProcess.ServiceProcessInstaller.Password
// 这两个属性设置值。
User = 3,
}
}
仍旧不甚理解。百度之。
当用户登录系统时,操作系统会验证他的密码。如果用户验证成功,系统会产生一个访问令牌,包含用户安全标示符(SID)、组SID列表、特权列表和模拟(Impersonating)信息等安全信息。我们可以把这个访问令牌理解为一个通行证,该用户启动任何进程时都将附加这个通行证(即访问令牌)。当用户想要启动或访问某一个受保护的进程时,系统会检查该用户的通行证,看看是否具备启动或访问权限。若通行证有此权限,则用户可以对进程进行操作,否则系统会拒绝该用户的请求。
而上面说到的四种Service Account类型就是具有不同权限的用户通行证。
按权限高低:LocalSystem>NetworkService>LocalService
当把用户账户类型设置为User,则需要为用户初始化用户名和密码,否则系统在安装服务时会提示输入有效的用户名和密码。