如何创建本地 Windows 桌面服务帐户?

eli*_*hen 5 windows services user-accounts powershell windows-services

题:

在 Windows Home / Professional (Windows 10) 中,创建本地服务帐户的推荐方法是什么?

有没有这方面的文件?(Powershell、GUI 等)。

说明:这不是 Active Directory 问题——或 Windows 服务管理帐户问题——仅限桌面。

语境:

Bittorent 的 BTSync 安装提示选择作为本地 Windows 服务启动。

在安装过程中,它会提示您输入本地服务帐户的用户名和密码。

就像在 Linux ... 中一样:

在 Linux 中,我通常会使用 useradd,并将帐户与适当的组相关联:

useradd -M btsync
usermod -L btsync
Run Code Online (Sandbox Code Playgroud)

注意:-r 用于在 Linux 中创建服务帐户,但它是否禁用登录似乎不一致 - 并且未记录,(man 链接)。

不会创建主目录,登录将被禁用,

eli*_*hen 6

适用于:

\n

Windows 7、8/8.1、Windows 10 - 家庭版和专业版。

\n

安装服务的程序(如 BTSync)——但不像其他程序那样遵循 Windows 服务约定(IIS、MySQL、SQL Server 等)。

\n

问题:

\n
    \n
  1. 软件缺陷: \xc2\xa0某些安装(如 BitTorrent Sync)不会安装 Windows 服务 - 除非指定常规用户帐户。\xc2\xa0
  2. \n
  3. 预期行为:应自动提供正确的 NT 服务帐户身份,或者至少允许用户也提供。
  4. \n
  5. 安全问题:用户被迫创建另一个常规用户\xc2\xa0account,[作为最佳实践,永远不应该这样做]。\xc2\xa0
  6. \n
  7. 解决方法:指定适当的服务帐户后,应删除此临时用户\xc2\xa0account。
  8. \n
\n

参考

\n
    \n
  1. Windows 不使用Linux 意义上的“服务帐户”,而是使用“虚拟帐户”和“托管服务帐户”(用于参与 LDAP 环境的计算机)

    \n
  2. \n
  3. 服务帐户命名约定:根据命名约定,虚拟帐户应遵循以下形式:“命令名称”-[扩展名]+“svc”注释注释
    NT Service\\ 应该是“属性”>“常规”选项卡中的服务名称 -它不必包含“svc”或命令名称。(不过,我还没有使用 PowerShell 脚本对此进行测试。)

    \n

    "btsync.exe" becomes "NT Service\\btsyncsvc"

    \n
  4. \n
\n

创建虚拟“NT 服务”帐户:

\n
    \n
  1. 打开本地服务管理单元“services.msc”

    \n
  2. \n
  3. 导航到所需的服务(btsync),右键单击“属性”。

    \n
  4. \n
  5. 选择“登录”选项卡。

    \n
  6. \n
  7. 选择指定用户的选项。

    \n
  8. \n
  9. 输入“常规”服务名称,如上所述:(不带引号)。

    \n

    NT Service\\btsyncsvc

    \n
  10. \n
  11. 删除密码。

    \n
  12. \n
  13. 保存 - 应用

    \n
  14. \n
  15. 重新启动服务。

    \n
  16. \n
\n

设置文件夹权限:

\n

设置文件夹权限 - 使用完整帐户名称:“NT Service\\btsyncsvc”,(根据上下文可能需要也可能不需要使用引号...)...

\n

btsyncsvc 不必具有执行权限,因此如果您愿意,请删除 - 否则,完全控制。

\n

错误 - 由于“帐户名称和安全 ID 之间没有映射”,服务无法启动:

\n

例如,如果您指定“NT Service\\btsync”而不是“NT Service\\btsyncsvc”,则会发生此错误...

\n

以下命令将返回当前服务帐户名称的列表。

\n

使用 PowerShell (PS),根据您指定用于“登录”的列表验证该列表:

\n

PS > get-service | foreach {Write-Host NT Service\\$($_.Name)}

\n

错误 - 服务无法启动,因为帐户尚未被授予作为服务登录的权限:

\n

如果您指定了不正确的“约定名称”,或者确实缺少权限,则可能会发生此错误 - 但如果使用正确的约定,则会自动分配权限。

\n

在 Windows 10 家庭版中,用户将无法使用本地安全策略管理单元来配置此功能 (secpol.msc),而必须通过 PowerShell 或其他实用程序手动完成。

\n

PowerShell 脚本:

\n

要解决此问题,可以使用 PowerShell。“授予登录即服务 PowerShell 脚本,来自 Technet Gallery”

\n

如果 PowerShell 报告“ExecutionPolicy Error”,则可能需要更改 ExecutionPolicy:

\n

PS > Set-ExecutionPolicy RemoteSigned

\n

...可能会导致签名错误--然后改为:

\n

PS > Set-ExecutionPolicy Unrestricted

\n

然后使用脚本分配权限:

\n

PS > .".\\Add Account To LogonAsService.ps1" "NT Service\\btsyncsvc"

\n

如果需要,重置执行策略:

\n

PS > Set-ExecutionPolicy Restricted

\n

希望这可以帮助!

\n