AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1070137
Accepted
Anton Tykhyy
Anton Tykhyy
Asked: 2021-07-21 09:09:15 +0800 CST2021-07-21 09:09:15 +0800 CST 2021-07-21 09:09:15 +0800 CST

将特定机器 SID 分配给新的 Windows 系统

  • 772

Windows 安装程序在安装时将唯一的计算机 SID 分配给 Windows 系统。机器 SID 不会通过网络公开,因此它通常无关紧要,但本地用户的安全标识符基于机器 SID,这可能会在共享用户配置文件和用户创建的文件时产生问题NTFS 卷。即使文件和文件夹的 ACL 仅具有预定义的非机器特定 SID(例如内置管理员组),它们的所有者也是创建本地用户,由机器 SID 和用户 RID 标识。例如,如果您想从全新的 Windows 安装媒体脚本构建您的开发系统,就好像它是一个 Linux 容器一样,就会出现这种情况。在这种情况下,您希望您构建的每个 Windows 系统都共享相同的机器 SID。

但是,SysInternals 的NewSID 实用程序早在 2009 年就已弃用并退役,并且在现代Windows 版本上无法 正常工作。有没有办法使用常规的 Windows 部署工具实现相同的结果?Mark Russinovich 在他反对 NewSID 的帖子中暗示可能是这种情况,但如果是这种情况,则没有记录此功能。当然,这不足为奇:微软的未记录功能历史悠久,可以追溯到 MS-DOS 时代。

windows sid sysprep
  • 1 1 个回答
  • 361 Views

1 个回答

  • Voted
  1. Best Answer
    Anton Tykhyy
    2021-07-21T09:09:15+08:002021-07-21T09:09:15+08:00

    未记录的SetupCl.exe实用程序是 Windows 安装工具的一部分,它清理系统映像,作为新 Windows 系统启动时运行的通用过程的一个步骤,通常执行诸如生成新磁盘标识符、修复重解析点和替换等操作在所有注册表项和可能的配置文件中,X:\使用适合您的目标系统(通常)的任何内容引用默认系统根目录(通常)。C:\此实用程序在首次启动时由 Windows 设置过程调用,并由SYSTEM\Setup\SetupCl\PendingRequest注册表项控制。此键中的 DWORD 值OperationFlags是一个位字段,指定实用程序将执行哪些转换。

    除了上面提到的转换之外,SetupCl还可以用新的 SID 替换现有的机器 SID。通过在密钥中设置位 2 ( 0x4)来请求此转换。两个可选的二进制值在同一个键中提供源和目标机器 SID。如果省略了源 SID,则从正在运行的系统中获取它。如果省略了目标 SID,则生成一个新的。这些值包含二进制形式的机器 SID,长度为 24 字节(8 字节固定长度标头和 4 个 32 位子权限)。要分配特定的机器 SID,请设置位 2并创建包含 SID 的值。OperationFlagsSYSTEM\Setup\SetupCl\PendingRequestSidAccountDomainOldSidAccountDomainNewSetupClSetupClSetupClOperationFlagsSidAccountDomainNew

    这个过程有几个并发症:

    1. 它适用于由 准备的映像,但在 DISM 或cmdletsysprep /generalize新部署的 Windows 映像上失败。Expand-WindowsImage新映像也处于通用状态,SetupCl在配置单元中设置了一个待处理的请求SYSTEM以在首次启动时运行,但该请求没有设置第 2 位。在离线镜像中设置会导致镜像部署失败。要解决此限制,必须执行一轮额外的泛化/专业化。一种方法是使用链式无人参与文件:第一个无人参与文件指定Microsoft-Windows-Setup-Shell/FirstLogonCommands要执行的单个命令sysprep /generalize /oobe /unattend:<second unattend file> /shutdown。

    2. SidAccountDomainNew在之前或之后在线添加值sysprep /generalize不起作用,很可能是因为sysprep安排了一些最终步骤在系统关闭时执行。完成后挂载离线 Windows 映像sysprep /generalize并且系统关闭,加载SYSTEM配置单元,然后在此时添加它。

    3. sysprep /generalize如果安装软件等待重新启动,则会失败。在通用化之前重新启动系统,或者在将软件安装到映像之前执行额外的通用化/专用化步骤。

    • 4

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve