'本地系统'帐户和网络服务'账户?

我已经编写了一个生成单独进程的Windows服务。这个过程创建一个COM对象。如果服务在“本地系统”帐户下运行,一切正常,但如果服务在“网络服务”帐户下运行,则外部进程启动,但未能创建COM对象。COM对象创建返回的错误不是标准的COM错误(我认为这是特定于正在创建的COM对象)。

那么,我如何确定两个帐户,“本地系统”和“网络服务”不同?这些内置帐户似乎非常神秘,似乎没有人知道太多关于他们。

421814 次浏览

由于标准服务帐户的功能有这么多的困惑,我将尝试快速运行。

首先是实际账目:

  • < p > < >强LocalService < / >强帐户(首选)

    一个有限服务帐户,非常类似于网络服务,旨在运行标准的最低特权服务。然而,与Network Service不同的是,它以匿名用户的身份访问网络。

    • 名称:NT AUTHORITY\LocalService
    • 该帐户没有密码(您提供的任何密码信息将被忽略)
    • HKCU代表LocalService用户帐号
    • 在本地计算机上有最小的特权
    • 在网络上显示匿名凭据
    • SID: S-1-5-19
    • HKEY_USERS注册表项(HKEY_USERS\S-1-5-19)下有自己的配置文件

    , < / p >

  • < p > < >强NetworkService < / >强帐户

    用于运行标准特权服务的有限服务帐户。这个帐户比本地系统(甚至管理员)有更多的限制,但仍然有作为机器访问网络的权利(见上面的警告)。

    • NT AUTHORITY\NetworkService
    • 该帐户没有密码(您提供的任何密码信息将被忽略)
    • HKCU代表NetworkService用户帐号
    • 在本地计算机上有最小的特权
    • 向远程服务器显示计算机的凭据(例如MANGO$)
    • SID: S-1-5-20
    • HKEY_USERS注册表项(HKEY_USERS\S-1-5-20)下有自己的配置文件
    • 如果尝试使用它调度任务,请在选择用户或组对话框中输入NETWORK SERVICE

    , < / p >

  • < p > < >强LocalSystem < / >强帐户 (危险,请勿使用!)

    完全受信任的帐户,比管理员帐户更受信任。这个帐户在单个机器上没有什么是不能做的,它有权作为机器访问网络(这需要Active Directory并授予机器帐户权限)

    • 名称:.\LocalSystem(也可以使用LocalSystemComputerName\LocalSystem)
    • 该帐户没有密码(您提供的任何密码信息将被忽略)
    • SID: S-1-5-18
    • 没有自己的配置文件(HKCU表示默认的用户)
    • 在本地计算机上有广泛的特权
    • 向远程服务器显示计算机的凭据(例如MANGO$)

    , < / p >

上面谈到访问网络时,这仅指SPNEGO (Negotiate)、NTLM和Kerberos,而不涉及任何其他身份验证机制。例如,以LocalService运行的进程仍然可以访问internet。

作为标准的开箱即用帐户运行的一般问题是,如果修改任何默认权限,就会扩展以该帐户运行的所有内容的权限集。因此,如果您将DBO授予数据库,那么不仅作为本地服务或网络服务运行的服务可以访问该数据库,作为这些帐户运行的所有其他服务也可以访问该数据库。如果每个开发人员都这样做,那么计算机将拥有一个服务帐户,该帐户拥有几乎任何权限(更具体地说,是授予该帐户的所有不同附加特权的超集)。

从安全的角度来看,作为您自己的服务帐户运行总是更可取的,该帐户拥有您所需要的权限,只做您的服务所做的事情。但是,这种方法的成本是设置服务帐户和管理密码。这是每个应用程序都需要处理的平衡行为。

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


在Windows Server 2003中不能运行定时任务 as

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

该功能只在Task 2.0调度器中添加,它只存在于Windows Vista/Windows Server 2008及更新版本中。

作为NetworkService运行的服务在网络上显示机器凭据。这意味着如果你的计算机被称为mango它将显示为机器帐户 MANGO$:

enter image description here