“本地系统”帐户和“networking服务”帐户之间的区别?

我写了一个Windows服务,产生一个单独的过程。 这个过程创build一个COM对象。 如果服务在“本地系统”帐户下运行一切正常,但如果服务在“networking服务”帐户下运行,则外部进程启动,但无法创buildCOM对象。 从COM对象创build返回的错误不是一个标准的COM错误(我认为它是特定于正在创build的COM对象)。

那么,我该如何确定两个账户“本地系统”和“networking服务”的区别? 这些内置的账户看起来很神秘,似乎没有人知道这些。

由于标准服务帐户的function有太多的困惑,所以我会尽量快速运行。

首先是实际账户:

  • LocalService帐户 (首选)

    与networking服务非常相似的有限服务帐户,用于运行标准的最低特权服务。 但是,与networking服务不同的是,当机器匿名用户的身份访问networking时,无法访问networking。

    • 名称: NT AUTHORITY\LocalService
    • 该帐户没有密码(您提供的密码信息被忽略)
    • HKCU代表LocalService用户帐户
    • 在本地计算机上拥有最less的权限
    • 在networking上呈现匿名凭证
    • SID :S-1-5-19
    • HKEY_USERSregistry项( HKEY_USERS\S-1-5-19 )下它自己的configuration文件
  • NetworkService帐户

    有限的服务帐户,旨在运行标准的特权服务。 这个账户远比本地系统(甚至是pipe理员)有限,但仍然有权以机器的方式访问networking(参见上文注意事项)。

    • NT AUTHORITY\NetworkService
    • 该帐户没有密码(您提供的密码信息被忽略)
    • HKCU代表NetworkService用户帐户
    • 在本地计算机上拥有最less的权限
    • 将计算机的凭据(例如MANGO$ )提供给远程服务器
    • SID :S-1-5-20
    • HKEY_USERSregistry项( HKEY_USERS\S-1-5-20 )下有它自己的configuration文件
    • 如果尝试使用它来安排任务,请在select用户或组对话框中inputNETWORK SERVICE
  • LocalSystem帐户 (危险,请勿使用!)

    完全可信的帐户,比pipe理员帐户更重要。 这个账户无法做到,它没有任何东西,它有权作为机器访问networking(这需要Active Directory并授予机器账户权限)

    • 名称: .\LocalSystem (也可以使用LocalSystemComputerName\LocalSystem
    • 该帐户没有密码(您提供的密码信息被忽略)
    • SID :S-1-5-18
    • 没有任何个人资料( HKCU代表默认用户)
    • 在本地计算机上拥有广泛的权限
    • 将计算机的凭据(例如MANGO$ )提供给远程服务器

上面谈到访问networking时,这仅涉及SPNEGO (协商),NTLM和Kerberos,而不涉及任何其他身份validation机制。 例如,作为LocalService运行的处理仍然可以访问Internet。

以开箱即用的帐户运行的一般问题是,如果您修改了任何默认权限,那么您将扩展所有以该帐户运行的组件。 因此,如果将DBO授予数据库,则不仅作为本地服务或networking服务运行的服务可以访问该数据库,还可以作为这些帐户运行的其他所有服务也可以访问该数据库。 如果每个开发者都这样做,那么计算机将具有一个服务帐户,该帐户有权执行几乎任何事情(更具体而言是授予该帐户的所有不同额外特权的超集)。

从安全的angular度来看,总是希望以自己的服务帐户运行,而这正是您所需的权限,而不是您的服务所做的任何事情。 但是,这种方法的成本是设置您的服务帐户,并pipe理密码。 这是每个应用程序需要pipe理的平衡行为。

在您的具体情况中,您可能看到的问题是DCOM或COM +激活仅限于给定的一组帐户。 在Windows XP SP2,Windows Server 2003及更高版本中,激活权限受到显着限制。 您应该使用组件服务MMCpipe理单元来检查您的特定COM对象并查看激活权限。 如果你没有访问networking上的任何东西作为机器帐户,你应该认真考虑使用本地服务 (不是本地系统,这基本上是操作系统)。


在Windows Server 2003中, 您不能像计划任务那样运行

  • NT_AUTHORITY\LocalService (又名本地服务帐户)或
  • NT AUTHORITY\NetworkService (又名networking服务帐户)。

仅在Windows Vista / Windows Server 2008及更新版本中才存在的Task Scheduler 2.0中添加了此function。

作为NetworkService运行的服务将在networking上显示机器凭据。 这意味着如果您的电脑被称为mango , 它将作为机器账户 MANGO$ 呈现 :

在这里输入图像描述