Windows 存在多套独立的标识符体系,分别在内核、安全子系统、文件系统、网络、COM、注册表、进程管理器等不同子系统内使用; 重点区分:名称(可读字符串,可重复修改) vs 系统底层唯一 ID(二进制 / 数字,内核用于定位对象)。 SID、PID、TID、句柄、GUID、MAC、IP、端口、NT 路径、UNC、驱动对象名,分属完全不同子系统,不可互相替换

 

Windows 各类标识符体系 拆解|底层原理 / 依赖文件 / 依赖关系 / 配套链 / 逻辑链路 / 边界

概述:Windows 存在多套独立的标识符体系,分别在内核、安全子系统、文件系统、网络、COM、注册表、进程管理器等不同子系统内使用; 重点区分:名称(可读字符串,可重复修改) vs 系统底层唯一 ID(二进制 / 数字,内核用于定位对象)。 SID、PID、TID、句柄、GUID、MAC、IP、端口、NT 路径、UNC、驱动对象名,分属完全不同子系统,不可互相替换

一、底层原理

Windows 采用子系统隔离式对象命名与标识模型

  1. 安全子系统(LSASS):核心标识为 SID(Security Identifier),用于主体安全身份(用户、组、登录会话、域内置账号),安全访问控制 ACL/ACE 全部依靠 SID 做判定;用户名只是人类可读别名,可修改,不用于内核权限校验
  2. 进程 / 线程管理器(内核对象管理器):PID(进程 ID)、TID(线程 ID)、各类句柄 (HANDLE,窗口句柄、文件句柄、连接句柄、图像句柄);句柄是当前进程内的索引值,不是全局唯一 ID。
  3. 网络子系统(NDIS/TCPIP):MAC(网卡硬件标识)、IP 地址(三层逻辑地址)、端口号(传输层多路复用标识)、计算机名 / 主机名(NetBIOS/DNS 名称)。
  4. 文件系统:文件名、本地驱动器号、本地路径、UNC 网络共享路径;NTFS 内部还有文件引用 ID(FileId)(文档清单中未列出,NTFS 底层唯一文件标识)。
  5. 注册表:注册表项(Key)、注册表值(Value),使用注册表路径定位配置节点。
  6. COM/DCOM:GUID/CLSID/IID,用来全局唯一标记 COM 类、接口。
  7. 通用唯一标识:GUID/UUID,128 位,由系统 API 生成,用于跨机器、跨组件全局标识对象(硬件 UUID、组件、安装包)。
  8. 事件与错误体系:EventID 事件 ID、系统错误码 Win32 ErrorCode,用于日志、API 返回错误。

核心底层区分:

  • 全局唯一标识符:SID、GUID/UUID、MAC、NTFS FileId、硬件 UUID;跨进程、跨重启保持稳定(部分例外) 仅本会话 / 本进程唯一:PID、TID、窗口句柄、文件句柄;重启 / 进程重建后会变
  • 可读别名(可修改,不保证唯一):用户名、组名、计算机名、文件名、窗口类名、服务显示名

二、依赖文件

文件 作用
lsass.exe + secur32.dllauthz.dll 安全子系统,SID 解析、NTAccount ↔ SID 互转、ACL 校验核心组件
ntoskrnl.exe Windows 内核,维护 PID/TID、内核对象句柄表、对象管理器
ntdll.dll 用户态内核对象 API,打开 / 查询句柄、进程信息
rpcrt4.dll COM,GUID/CLSID/IID 解析、COM 对象查找
iphlpapi.dll 网络信息读取:IP、MAC、网卡信息、主机名
netapi32.dll 查询本地 / 域用户、组、计算机名称解析
advapi32.dll 注册表读写、安全描述符操作
kernel32.dll 进程、文件、句柄、环境变量 API($env:环境变量底层)
user32.dll 窗口句柄、窗口类名管理(GUI 窗口对象)
wmi.dll / wbemprox.dll WMI,查询 SID、硬件 UUID、计算机信息(wmic/Get-WmiObject 底层)
powershell.exe + System.Security.Principal .NET 程序集 PowerShell SID/NTAccount 转换、SID 查询、New-Guid

三、依赖关系

  1. SID 体系依赖 LSASS 安全子系统。
    • 本地账号 SID 存在 SAM 数据库 C:\Windows\System32\config\SAM;域账号 SID 存储在 AD 域数据库(NTDS.dit)
    • ProfileList注册表子键,将 SID 与用户配置文件路径绑定。
  2. PID/TID、句柄依赖内核对象管理器;句柄是进程私有句柄表索引,内核内部有全局对象 ID
  3. GUID 生成依赖 UuidCreate API(rpcrt4.dll);New-Guid底层调用这个 Win32 API。
  4. 硬件 UUID:存储在主板固件 BIOS/UEFI,WMI 读取固件信息,不是操作系统生成。
  5. 名称解析依赖 DNS/NetBIOS;计算机名保存在注册表 HKLM\SYSTEM\CurrentControlSet\Control\ComputerName
  6. 权限依赖:
    • 查询本地用户 SID、WMI 硬件 UUID,普通用户大多可读;
    • 枚举全部本地账号、读取 SAM 详细信息、查询远程计算机标识符,通常需要管理员权限

四、配套链

1. SID 查询链路(PowerShell 示例:用户名转 SID)

PowerShell → System.Security.Principal.NTAccount → .NET调用 secur32.dll(LookupAccountName) → LSASS/SAM → 返回SID

注册表读取 SID 链路:

regedit/PowerShell注册表API → advapi32.dll → 读取HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList → 读取SID子键与ProfileImagePath

2. PID / 句柄查询链路

PowerShell Get-Process → ntdll.dll → 内核对象管理器 ntoskrnl.exe → 返回PID、句柄信息

3. GUID 生成链路

New-Guid → [System.Guid]::NewGuid() → rpcrt4.dll UuidCreate → 生成128位GUID

4. 硬件 UUID 查询链路

Get-WmiObject Win32_ComputerSystemProduct → wbemprox.dll WMI客户端 → 本地Winmgmt服务 → 读取UEFI/BIOS固件 → 返回硬件UUID

配套工具清单

  • whoami /user:查询当前登录用户 SID
  • wmic useraccount:WMI 查询用户 SID
  • Get-LocalUser(PowerShell):本地安全账户管理器查询用户 SID
  • tasklist:枚举 PID
  • handle.exe(Sysinternals):查看各类内核对象句柄
  • Get-NetAdapter:读取 MAC、网卡标识
  • reg query:读取注册表 ProfileList 用户 SID 映射

五、逻辑链路(时序,以【用户名转 SID】为例)

  1. 输入用户名(可读别名);
  2. API 调用LookupAccountName,提交用户名 + 域名给 LSASS;
  3. LSASS 查询本地 SAM 数据库(或远程 AD 域);
  4. SAM/AD 查找匹配账号,返回SID(安全子系统唯一身份标识);
  5. 返回 SID 到上层应用(PowerShell/whoami/wmic);
  6. 上层程序格式化输出 SID 字符串 S-1-5-21-xxxx-xxxx-xxxx-500

反向转换:SID → 用户名,调用LookupAccountSid,LSASS 做 SID 到账号名称翻译。

六、边界约束(重点边界、常见误区)

  1. SID 边界
    • SID不会随用户名修改而改变;删除重建同名用户,SID 完全不同;ACL 权限存储的是 SID,不是用户名。
    • 本地账号 SID 前缀:S-1-5-21-<机器SID>-RID;域账号使用域 SID+RID。
    • 内置 SID(如 S-1-5-7 匿名,S-1-5-32-544 管理员组)跨所有 Windows 机器固定不变
  2. 句柄边界
    • 窗口句柄、文件句柄仅在当前进程 / 会话有效,不是全局唯一 ID;进程重启句柄值全部失效;内核对象本身拥有全局唯一对象 ID,句柄只是进程内索引。
  3. PID 边界
    • PID 是系统会话内唯一,系统重启后 PID 全部重置;系统会复用 PID(进程退出后,PID 可分配给新进程)。
  4. GUID/UUID 边界
    • New-Guid生成的是随机 GUID(版本 4),不绑定硬件;主板硬件 UUID 是固件烧录,版本 1,绑定硬件。
    • GUID 理论全局唯一,但人为复制粘贴可重复;仅算法保证极低碰撞概率,不是密码学绝对唯一。
  5. 名称类标识符(用户名、计算机名、文件名)
    • 只是人类可读别名,允许重复(在部分场景),可以随时修改;系统内核安全、对象查找不依赖名字,依赖底层 ID。
  6. MAC 地址边界
    • MAC 可以在驱动层软件篡改;操作系统读到的 MAC 是 NDIS 上报值,不一定等于网卡出厂烧录 MAC。
  7. UNC 路径边界
    • UNC \\server\share 依赖名称解析(DNS/NetBIOS);计算机名称改变,UNC 路径失效;底层访问最终依赖 SMB 会话 + 目标 SID 校验。
  8. 文件描述符概念澄清

    Windows 原生 API没有 Unix 风格的文件描述符;文档中提到的 File Descriptor 属于 Unix 概念,Windows 用文件句柄 HANDLE;WSL 子系统内部才存在类文件描述符。

七、核心标识符横向 Markdown 对比简表

标识符 所属子系统 全局唯一? 重启后保留? 是否可修改 主要用途
SID 安全标识符 LSASS 安全子系统 ✅是 ✅账号不删除就保留 ❌不可修改 权限、ACL、身份主体
PID 进程 ID 内核对象管理器 ❌仅开机会话唯一 ❌重启重置,可复用 ❌系统分配 定位运行进程
TID 线程 ID 内核对象管理器 ❌仅开机会话唯一 ❌重启重置,可复用 ❌系统分配 定位线程
HANDLE 句柄 (窗口 / 文件) 内核对象管理器 ❌进程内有效 ❌进程销毁失效 ❌系统分配 进程操作内核对象
GUID/UUID (软件) COM / 通用 API ✅理论全局 ✅生成后不变 ✅可新建新 GUID 标记 COM、组件、配置项
硬件 UUID BIOS/UEFI 固件 ✅硬件全局 ✅不变 ❌固件固化 硬件资产识别
MAC 地址 NDIS 网卡驱动 ✅出厂硬件唯一 ✅硬件不变 ✅软件可伪造 二层局域网寻址
IP 地址 TCP/IP 协议栈 ❌逻辑地址 ❌可动态变化 ✅可随时修改 三层网络寻址
用户名 / 组名 SAM/AD ❌仅同库唯一,可改名 ✅保留 ✅可修改 人类可读身份别名
计算机名 系统配置 ❌局域网可重名 ✅保留 ✅可修改 网络主机名称解析
NTFS FileId 文件系统 ✅分区内唯一 ✅文件不删除不变 ❌不可手动修改 NTFS 底层定

Windows 系统补充标识符清单 + 简要属性(承接上一轮,延续同一体系)

筛选 Windows 内核、驱动、安全、存储、WMI、NT 对象、日志、虚拟化子系统内另外一批关键标识符,附带属性;后面汇总横向对比表。

一、内核 & 对象管理器类

  1. 对象名称(NT Object Name) 示例:\Device\HarddiskVolume1\BaseNamedObjects\MyEvent
    • 所属:内核对象管理器 ntoskrnl.exe
    • 作用:内核路径命名空间,标识设备、事件、信号量、互斥体、端口等内核对象;用户态 NtOpenObject 通过此名称打开对象
    • 唯一性:内核全局命名空间唯一;重启后动态对象消失,设备对象一般重启重建
  2. 对象 ID(Object ID,内核对象) 内核内部对每个活动内核对象分配的唯一 64bit 标识,用户态无直接 API 读取,仅内核调试(WinDbg)可见;进程 / 线程内核对象都有。
  3. Session ID(会话 ID) 终端服务会话编号,0 = 控制台会话,1、2… 远程桌面会话;标识登录会话桌面环境;同机器多用户远程登录依靠 Session ID 隔离。
  4. 登录会话 ID(LUID,Locally Unique Identifier) LUID 64 位本地唯一 ID,LSASS 生成;代表一次登录会话,一个用户账号可以同时存在多个 LUID(多次登录);令牌 Token 内部携带 LUID,用于跟踪登录凭证上下文。
  5. Token ID(访问令牌 ID) 访问令牌 (Token) 的唯一标识,LSASS 维护;每个登录会话生成安全令牌,用于权限判定。

二、磁盘 / 文件系统 / 存储子系统

  1. Volume GUID(卷 GUID,也叫卷唯一 ID) 格式:\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\
    • NTFS/FAT 格式化卷生成;分区不变则永久保留,不依赖盘符;盘符可以删除 / 更换,但 Volume GUID 不变
    • 用途:绕过盘符,直接定位磁盘分区;DiskPart、VSS 卷影复制大量使用
  2. VCN(Virtual Cluster Number,虚拟簇号) NTFS 文件内的簇偏移;定位文件内部的磁盘簇,文件系统底层元数据标识。
  3. MFT 记录号(MFT Record Number) NTFS 主文件表记录编号,每个文件 / 目录占用一条 MFT 记录;分区内唯一,就是前面提到 FileId 的组成部分。
  4. Disk Signature(磁盘签名,MBR 磁盘) / GPT Disk Unique Partition GUID
    • MBR 磁盘:4 字节磁盘签名,写在磁盘扇区;Windows 用来识别磁盘
    • GPT:每个分区自带 Partition GUID(分区全局唯一 ID),磁盘本身也有 Disk GUID;重装系统不改变分区 GUID
  5. VSS 快照 ID(Shadow Copy ID) 卷影副本快照 GUID,每个快照实例唯一;用于备份、文件历史、系统还原。

三、安全 & 认证子系统

  1. LSA Policy ID / Secret Key ID LSA 保护密钥标识,LSASS 管理 LSA Secrets(存储账号凭据、机器域密码)。
  2. 权限特权 ID(LUID for Privileges) 系统特权(SeDebugPrivilege、SeTakeOwnershipPrivilege)内部使用 LUID 标识。
  3. 安全描述符 SD 的 SID+ACE(前面已有 SID,补充:ACL 内部 ACE 标识符
  4. 机器 SID(Machine SID) 本地计算机本身 SID,本地所有账户 SID 的前缀 S-1-5-21-MachineSID-RID;域环境中机器账号(COMPUTER$)使用域 SID。

四、驱动、设备、PnP 即插即用子系统

  1. Device Instance ID(设备实例 ID,PnP) 示例:USB\VID_xxxx&PID_xxxx\6&xxxx
    • PnP 管理器分配;系统中每一个接入硬件实例唯一;同型号两个 U 盘,Device Instance ID 不同
    • 存储在注册表 HKLM\SYSTEM\CurrentControlSet\Enum\
  2. Hardware ID / Compatible ID 硬件厂商上报的硬件标识符,用于匹配驱动包;一个设备可多个 HardwareID;不是实例唯一,同型号硬件 HardwareID 相同
  3. Class GUID(设备类 GUID) 设备大类 GUID,如网卡类、磁盘类、USB 类 GUID;用于归类硬件设备,匹配设备安装类。

五、COM / RPC / 应用组件

  1. IID(Interface ID):COM 接口 GUID,标识接口;
  2. CLSID(Class ID):COM 类 GUID,标识 COM 组件类;
  3. ProgID:可读别名,映射 CLSID(字符串,可重复,可修改注册表修改映射)
  4. RPC Interface UUID:RPC 接口唯一 UUID,RPC 服务注册使用,rpcss 端点映射器依靠 UUID 查找 RPC 服务。

六、网络子系统补充

  1. IPv6 接口 ID / 接口索引(IfIndex) 网卡接口索引号(整数,如 3、4),IP Helper API 核心标识,本机系统内网卡唯一数字 ID;很多 netsh/powershell 网络命令用 IfIndex 定位网卡,比网卡名称更稳定。
  2. Flow Label(IPv6 流标签):IPv6 头部 20bit 标识符,标记同一流数据包,QoS 使用。
  3. Connection ID(TCP 连接 ID,TCP 四元组:源 IP: 端口 + 目标 IP: 端口) TCP 连接靠四元组全局唯一标识一条 TCP 会话。
  4. SSRC(RTP 同步源标识符):Windows 媒体栈、WebRTC 使用。

七、进程 / 线程 / 映像补充

  1. ETW Provider GUID:ETW 事件追踪提供者 GUID,每个日志提供者唯一。
  2. ImageBase 映像基址:PE 加载到内存的起始虚拟地址,不是全局 ID,单次加载有效;ASLR 每次启动会变化。
  3. PE 映像校验和:PE 文件头部校验值,用于驱动 / 映像完整性校验。

八、WMI / 日志 / 事件体系

  1. WMI Namespace 路径root\cimv2 这类命名空间标识
  2. WMI Class ID / WMI Class Name:WMI 类标识(Win32_Process 等字符串标识)
  3. EventLog Channel GUID:事件日志通道唯一 GUID
  4. Activity ID(事件活动 ID,GUID) 事件追踪、ETW 日志中,关联一次业务操作的多条事件;跨进程跟踪一次事务。

九、虚拟化 / 容器(Windows 容器、Hyper-V)

  1. VM Instance ID(Hyper-V 虚拟机实例 GUID),虚拟机唯一标识
  2. Container ID(容器实例 ID),Windows 容器实例 GUID
  3. VHD/VHDX 唯一标识符,虚拟磁盘内部 ID

新增标识符汇总简表(追加到上一张表)

标识符 所属子系统 全局唯一? 重启后保留? 是否可修改 主要用途
LUID 本地唯一标识符 LSASS 安全子系统 ❌本机唯一 ❌重启重置 ❌系统分配 登录会话、特权标识
SessionID 会话 ID 终端服务 ❌本机唯一 ❌重启重置 ❌系统分配 区分桌面 / 远程桌面会话
Volume GUID 卷 GUID 存储 / NTFS ✅分区全局 ✅分区不变则不变 ❌格式化重建 稳定定位磁盘卷,脱离盘符
Device Instance ID PnP 即插即用 ✅本机硬件实例唯一 ✅硬件不拔保留 ❌硬件实例固定 识别单个硬件设备实例
HardwareID 硬件 ID PnP 即插即用 ❌同型号设备共用 ✅固件固化 ❌厂商烧录 驱动匹配
IfIndex 网卡接口索引 IP Helper/TCPIP ❌本机系统内唯一 ❌系统重启可能变 ❌系统分配 网卡编程定位
IID / CLSID COM 组件 ✅全局 ✅注册后不变 ✅可新建 GUID COM 接口与组件标识
RPC Interface UUID RPC 子系统 ✅全局 ✅服务注册不变 ✅可自定义 RPC 接口匹配
Activity ID 活动 GUID ETW 事件跟踪 ✅每次事务唯一 ❌事务结束失效 ❌系统生成 跨进程事件链路追踪
GPT Partition GUID GPT 磁盘分区 ✅全局 ✅分区不删除不变 ❌分区创建生成 GPT 分区唯一标识
VM Instance GUID Hyper-V 虚拟化 ✅全局 ✅虚拟机存在就保留 ❌新建虚拟机生成 虚拟机实例标识

边界要点(新增标识符高频误区)

  1. LUID:本地唯一,跨机器不保证唯一,专用于登录会话与特权;和 SID 完全不同。
  2. Volume GUID:格式化分区会重新生成全新 GUID;删除盘符不会修改卷 GUID。
  3. Device Instance ID:同一 U 盘插不同 USB 口,Device Instance ID 会变化;HardwareID 不变。
  4. IfIndex:系统网卡增删(VPN / 虚拟网卡添加删除),IfIndex 可能变动,不适合长期静态脚本硬编码
  5. CLSID/ProgID:ProgID 只是字符串别名,CLSID 才是 COM 底层唯一标识;修改注册表可把 ProgID 绑定到别的 CLSID。

Windows 标识符体系 继续补充清单

承接前面两批,继续挖掘内核、存储、安全、网络、PE、缓存、事务、证书、I/O、打印、WFP 等子系统内的标识符,附带属性。

一、内核、I/O、对象管理器

  1. IRP 数据包 ID I/O 请求包 IRP,内核 I/O 操作的工作载体;内核内部标记 IRP 实例 ID,用于跟踪单次 I/O 请求;仅本次 I/O 生命周期有效,用户态不可直接读取。
  2. 内核回调对象 ID(Callback Object ID) 内核回调注册对象,用于驱动通知(进程创建、镜像加载回调),内核内部唯一标识。
  3. KTHREAD / EPROCESS 内核对象地址(内核虚拟地址) 内核调试(WinDbg)使用,EPROCESS是进程内核结构体;不是持久 ID,每次加载地址改变,ASLR 会改变
  4. Wait Object Key(等待对象 Key) 用于同步对象(事件、互斥体)等待操作的内核标识。

二、文件系统 / 存储 / 事务子系统

  1. USN Journal ID(USN 日志序列号,Update Sequence Number) NTFS 变更日志,每个文件修改生成递增 USN;分区内单调递增,用于文件变更审计、备份、文件索引(Windows Search)。
  2. ReFS Object ID ReFS 文件系统的对象 ID,类似 NTFS ObjectId,可跨卷跟踪文件。
  3. Transaction ID(TxF 事务 ID,NTFS 事务) NTFS 事务型文件操作(TxF)的事务 GUID;TxF 在 Win10 1709 后弃用。
  4. File Object ID(NTFS ObjectId) 可选文件级 GUID,应用可设置;用于分布式链接跟踪,移动文件后仍可定位。
  5. Chunk ID(重复数据删除块 ID,Data Deduplication) 存储块唯一哈希 ID,Windows 服务器重复删除功能使用;相同内容共用同一个 Chunk ID。
  6. Storage Pool ID / Virtual Disk ID(存储池、存储空间) Windows 存储空间 (Storage Spaces),存储池 GUID、虚拟磁盘 GUID,标识池与虚拟磁盘。

三、安全、证书、密码、加密子系统

  1. Cert Hash / Thumbprint(证书指纹) X.509 证书 SHA1/SHA256 指纹,用来唯一标识证书;存储在证书存储区Cert:\
  2. Cert Serial Number(证书序列号) CA 签发证书时分配;同一 CA 下唯一标识一张证书。
  3. Key Container Name(密钥容器名称) CNG/CAPI 加密密钥容器标识,保存 RSA/ECC 私钥。
  4. CNG Key ID(Key Identifier) CNG 下一代加密 API,密钥对象唯一标识 GUID。
  5. Hash ID(安全哈希) 文件哈希 SHA256/SHA1/MD5;内容唯一,文件改名 / 移动不改变哈希,修改内容哈希立即变化
  6. AppModel Package Family Name / Package Full Name UWP/MSIX 应用包标识:PackageFullName包含版本、架构;PackageFamilyName不带版本,作为家族固定标识。
  7. Capability ID(UWP 能力 ID) UWP 应用声明的权限能力 GUID,如互联网访问、文件访问能力。

四、PnP、驱动、电源、WFP 网络过滤平台

  1. Filter Driver Instance ID(WFP 过滤器实例 ID) Windows Filtering Platform(WFP),每一条防火墙 / 数据包过滤规则有 FilterID(LUID 类型)。
  2. Callout ID(WFP 标注 ID) WFP 的 Callout 驱动回调标识,用于自定义数据包处理。
  3. Provider Context ID(WFP 上下文 ID) WFP 附加的自定义上下文对象 ID。
  4. Power Setting GUID(电源策略 GUID) 电源子系统,每一项电源参数(屏幕亮度、休眠超时)使用 GUID 标识。

五、网络子系统新增

  1. IPsec SA ID(安全关联 ID) IPsec VPN,安全关联 SA 的 LUID,标识一条加密隧道会话。
  2. QoS Flow ID(QoS 流 ID) Windows 流量 QoS 子系统,标记 QoS 流。
  3. Neighbor Cache Entry ID(邻居缓存条目 ID) ARP/ND 缓存条目内部标识,存储 IP-MAC 映射。
  4. Interface Alias + Interface Description 网卡友好名称 / 硬件描述字符串(别名,可重复,可修改),和 IfIndex 配套使用。

六、进程、PE、内存、ETW

  1. PE File Signature ID(Authenticode 签名证书 ID) 可执行文件数字签名标识。
  2. Process Token LogonId(令牌内部 LUID) 访问令牌内部携带的登录会话 LUID。
  3. ETW Event ID + Event Opcode + Task ETW 事件元数据标识,EventID 是事件编号,Opcode/Task 用来分类事件。
  4. ETW Session GUID ETW 跟踪会话的唯一 GUID,用来区分不同的跟踪会话。
  5. Memory Region Allocation Handle 进程虚拟内存分配句柄,本进程内有效。

七、打印、服务、任务计划

  1. Print Job ID(打印作业 ID) Print Spooler 打印队列内作业编号,仅在打印服务运行期间有效,重启打印服务重置
  2. Service Control Handle(服务控制句柄) OpenSCManager/OpenService 返回句柄,进程内有效,操作 Windows 服务。
  3. Task Scheduler Task ID / Task Path 任务计划程序:TaskPath 为 XML 任务路径;任务有注册任务 GUID 标识。
  4. Trigger ID(任务计划触发器 ID) 任务的触发器唯一标识。

八、远程管理、域、LDAP

  1. DN(Distinguished Name,可分辨名称) Active Directory LDAP 对象唯一名称:CN=User,OU=xxx,DC=xxx,AD 内定位对象。
  2. ObjectGUID(AD 对象 GUID) AD 每个对象(用户、组、计算机)内置 ObjectGUID,全局唯一,对象生命周期永久不变(比 SID 更稳定;SID 可在特殊场景迁移修改,ObjectGUID 不会)。
  3. Domain GUID(域 GUID) AD 域的全局唯一 GUID 标识整个域。
  4. RID 池 ID(RID Pool Identifier) RID Master 分配给域控制器的 RID 池标识。

追加简表(新增条目)

标识符 所属子系统 全局唯一? 重启后保留? 是否可修改 主要用途
USN 更新序列号 NTFS 文件系统 ❌分区内唯一 ✅分区格式化前持续递增 ❌系统自增 文件变更跟踪、索引、备份
ObjectId (NTFS 文件对象 ID) NTFS ✅分区内唯一 ✅文件不删除保留 ✅可手动设置 分布式链接跟踪
证书指纹 (Thumbprint) CAPI/CNG 证书子系统 ✅证书全局唯一 ✅证书不变就不变 ❌证书签发固定 证书快速匹配校验
WFP FilterID LUID,WFP 网络过滤 ❌本机唯一 ❌重启后规则重建会变 ✅可新增 / 删除 数据包过滤规则标识
IPsec SA LUID IPsec 网络栈 ❌本机唯一 ❌隧道断开失效 ❌系统分配 IPsec 加密隧道会话
AD ObjectGUID Active Directory ✅全局唯一 ✅对象存在永久不变 ❌不可修改 AD 对象稳定唯一标识
DN 可分辨名称 AD LDAP ✅域内唯一 ❌移动 OU 会改变 ✅移动对象可变更 LDAP 路径定位 AD 对象
PrintJobID 打印作业 ID PrintSpooler 打印池 ❌打印服务会话唯一 ❌重启打印服务重置 ❌系统分配 标识打印队列任务
PackageFullName/MSIX 包全名 AppX 应用模型 ✅全局 ✅包安装后不变 ✅重装包变更 UWP/MSIX 应用标识
Task Registration GUID 任务计划程序 ✅本机任务唯一 ✅任务存在不变 ✅新建任务生成 标识计划任务
Chunk ID (重删块 ID) 存储重复删除 ✅内容哈希全局 ✅存储池内持久 ❌由内容哈希生成 重复数据删除

新增边界误区

  1. AD ObjectGUID vs SID:ObjectGUID终身绑定 AD 对象,跨域迁移对象时 ObjectGUID 保留;SID 在跨域迁移场景可更换,所以 AD 资产跟踪优先用 ObjectGUID。
  2. USN 序列号:分区格式化后 USN 日志重置,序号从 0 重新开始;USN 仅代表分区内变更顺序。
  3. 证书指纹:指纹只是哈希,不是证书本身;两张不同证书存在理论哈希碰撞(SHA256 几乎不可能,但原理上不是绝对唯一)。
  4. WFP FilterID 是 LUID,重启机器、重启 WFP、删除重建规则,FilterID 会变,不要硬编码写在脚本里长期引用
  5. PrintJobID:仅仅是打印池内存中的编号;重启 spooler 服务,所有打印任务 ID 全部清零重新分配。

 

Windows 10中还有其他类似的标识符和概念。以下是一些常见的:

  1. 用户名(Username):每个用户在系统中都有一个唯一的用户名,用于登录和识别用户身份。

  2. 用户ID(User ID):每个用户在系统中都有一个唯一的用户ID,用于在系统级别上标识用户。Windows系统中使用的是SID(Security Identifier)来唯一标识用户

  3. 组(Group):组是一种将多个用户集合在一起的机制。每个组都有一个唯一的组ID。

  4. 组ID(Group ID):每个组在系统中都有一个唯一的组ID,用于在系统级别上标识组。

  5. 计算机名(Computer Name):计算机名是给计算机分配的唯一标识符,用于在网络中识别计算机。

  6. 主机名(Host Name):主机名是计算机在网络中的名称,用于标识特定的计算机。

  7. IP地址(IP Address):IP地址是用于在网络中标识计算机的数字标识符。

  8. 文件名(File Name):文件名是用于在文件系统中标识特定文件的名称。

  9. 文件路径(File Path):文件路径指定了文件在文件系统中的位置,包括目录和文件名。

  10. 注册表项(Registry Key):注册表项是Windows操作系统中用于存储配置信息的数据库条目。

  11. 进程ID(Process ID):每个正在运行的程序都有一个唯一的进程ID,用于在系统中标识该进程。

  12. 服务名(Service Name):服务名是用于标识在系统中运行的服务的名称。

  13. 窗口句柄(Window Handle):窗口句柄是用于在Windows系统中标识窗口的唯一标识符。

  14. MAC地址(MAC Address):MAC地址是用于在网络中标识网络适配器的物理地址。

  15. 端口号(Port Number):端口号是在网络通信中用于标识应用程序或服务的数字标识符。

  16. UNC路径(UNC Path):UNC路径是一种用于在网络中标识共享文件夹的路径格式。

  17. 连接句柄(Connection Handle):连接句柄是用于在Windows中标识网络连接的唯一标识符。

  18. 图像句柄(Image Handle):图像句柄是用于在Windows中标识正在运行的程序的图像的唯一标识符。

  19. GUID(Globally Unique Identifier):全局唯一标识符,用于在系统中唯一标识对象或实体。

  20. 文件描述符(File Descriptor):在操作系统中用于标识已打开文件的整数值。

  21. 线程ID(Thread ID):每个线程在系统中都有一个唯一的线程ID,用于标识特定线程。

  22. COM对象标识符(COM Object Identifier):用于在Component Object Model (COM) 中标识COM对象的唯一标识符。

  23. 窗口类名(Window Class Name):用于在Windows系统中标识窗口类的名称。

  24. 驱动器号(Drive Letter):在Windows系统中用于标识存储设备或磁盘分区的字母。

  25. 事件ID(Event ID):在Windows系统中用于标识特定事件的唯一标识符。

  26. 系统错误码(System Error Code):在Windows系统中用于标识特定系统错误的数字代码。

  27. 计算机描述符(Computer Descriptor):在Windows系统中用于描述计算机的信息,例如操作系统版本、硬件配置等。

  28. DLL名称(DLL Name):动态链接库文件名,用于在Windows系统中标识特定的DLL文件。

  29. 计算机名(Computer Name):用于在网络中标识计算机的名称。

  30. 用户名(User Name):用于在系统中标识用户的名称。

  31. 注册表项值(Registry Value):注册表中存储的配置信息的键值对。

  32. 程序包名(Package Name):用于标识Windows应用程序包的名称。

  33. 错误日志条目(Error Log Entry):记录在系统日志中的错误信息条目。

  34. 文件路径(File Path):用于在文件系统中标识文件或文件夹的路径。

  35. 注册表键(Registry Key):注册表中存储的配置信息的分类标识。

  36. IP地址(IP Address):用于在网络中标识设备的唯一地址。

  37. 系统环境变量(System Environment Variable):在操作系统中定义的全局变量,用于配置系统行为和应用程序运行。

  38. 进程ID(Process ID):每个运行的进程在系统中都有一个唯一的进程ID,用于标识特定进程。


Windows 用户的 SID(安全标识符)是一个唯一的标识符,用于标识系统中的每个用户账户。你可以通过多种方法查询用户的 SID,包括使用注册表、命令行工具和 PowerShell 命令。下面是如何通过这些方法查询用户 SID 的步骤:

1. 通过注册表查询用户 SID

在 Windows 注册表中,你可以找到用户 SID 信息。SID 存储在以下位置:

Copy Code
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

每个子键对应一个用户 SID,并且键值 ProfileImagePath 存储了与该 SID 关联的用户配置文件路径。

步骤:

  1. 打开 注册表编辑器(按 Win + R,输入 regedit,然后回车)。
  2. 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
  3. 查找各个子键(每个子键的名称是 SID),并查看 ProfileImagePath 键对应的路径。

通过注册表,你可以找到每个用户的 SID。

2. 通过 CMD 命令查询用户 SID

在命令行中,使用 wmicwhoami 命令来查询当前用户或其他用户的 SID。

2.1 查询当前用户的 SID:

使用 whoami 命令与 SID 参数来查询当前用户的 SID。

cmdCopy Code
whoami /user

这会显示当前用户的用户名和 SID。

2.2 查询特定用户名的 SID:

如果你想查询其他用户的 SID,可以使用 wmic 命令:

cmdCopy Code
wmic useraccount where name='用户名' get sid

替换 用户名 为你想查询的用户的用户名。

例如,如果你想查询 Administrator 用户的 SID:

cmdCopy Code
wmic useraccount where name='Administrator' get sid

3. 通过 PowerShell 查询用户 SID

在 PowerShell 中,使用 Get-LocalUserGet-WmiObject 来查询本地用户的 SID。

3.1 查询当前用户的 SID:

可以通过以下 PowerShell 命令查询当前用户的 SID:

powershellCopy Code
([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value

这会返回当前登录用户的 SID。

3.2 查询指定用户名的 SID:

使用 Get-LocalUser 命令查询本地用户的 SID:

powershellCopy Code
Get-LocalUser -Name "用户名" | Select-Object Name, SID

替换 用户名 为你想查询的用户。

例如,查询 Administrator 用户的 SID:

powershellCopy Code
Get-LocalUser -Name "Administrator" | Select-Object Name, SID

3.3 使用 Get-WmiObject 查询用户 SID:

你也可以使用 Get-WmiObject 查询特定用户的 SID:

powershellCopy Code
Get-WmiObject -Class Win32_UserAccount -Filter "Name='用户名'" | Select-Object Name, SID

总结

  • 注册表查询:通过 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 查找用户 SID。
  • CMD 查询:使用 whoami /user 查询当前用户的 SID,或使用 wmic useraccount 查询其他用户的 SID。
  • PowerShell 查询:通过 Get-LocalUser 或 Get-WmiObject 命令查询本地用户的 SID。

这些方法都可以有效地帮助你查询到 Windows 用户的 SID。

 


# 获取当前用户的用户名
$env:USERNAME

# 获取当前用户的SID
$SID = (New-Object System.Security.Principal.NTAccount($env:USERDOMAIN, $env:USERNAME)).Translate([System.Security.Principal.SecurityIdentifier]).Value
$SID


PowerShell中,您可以使用以下命令来查看所有用户的SID:

powershellCopy Code
# 获取本地计算机上所有用户的SID
$users = Get-WmiObject -Query "Select * From Win32_UserAccount"
foreach ($user in $users) {
    $username = $user.Name
    $sid = $user.SID
    Write-Host "Username: $username, SID: $sid"
}

这个命令将获取本地计算机上所有用户的SID,并将它们的用户名和SID输出到控制台。请注意,此命令需要以管理员权限运行才能获取完整的用户信息。


PowerShell查看当前用户所属的用户组信息,可以使用以下命令:

powershellCopy Code
# 获取当前用户所属的所有用户组
$groups = [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups

# 输出用户组信息
foreach ($group in $groups) {
    $groupName = $group.Translate([System.Security.Principal.NTAccount]).Value
    Write-Host "Group: $groupName"
}

这个命令将输出当前用户所属的所有用户组信息。


PowerShell中,您可以使用以下命令来查看计算机名称(Computer Name):

powershellCopy Code
# 获取计算机名称
$computerName = $env:COMPUTERNAME
$computerName

这个命令将输出当前计算机的名称。您可以直接在PowerShell中运行这个命令,并查看输出结果即可得知当前计算机的名称。


PowerShell中,您可以使用以下命令生成一个新的GUID(Globally Unique Identifier):

powershellCopy Code
# 生成一个新的GUID
New-Guid

运行上述命令将在控制台中生成一个新的GUID,并将其显示出来。GUID是一种唯一标识符,通常用于标识对象或实体,在许多情况下被用于确保全局唯一性。

如果您想将生成的GUID保存到变量中以便后续使用,可以将命令修改为:

powershellCopy Code
# 生成一个新的GUID并保存到变量
$guid = [System.Guid]::NewGuid()
$guid

这样生成的GUID将保存在变量 $guid 中,并可以随时访问。


PowerShell 中,您可以使用以下命令查询本地计算机的 UUID(Universally Unique Identifier):

powershellCopy Code
# 查询本地计算机的 UUID
(Get-WmiObject Win32_ComputerSystemProduct).UUID

这个命令将返回本地计算机的 UUID。如果您需要查询远程计算机的 UUID,可以将命令修改为:

powershellCopy Code
# 查询远程计算机的 UUID
(Get-WmiObject Win32_ComputerSystemProduct -ComputerName "remoteComputerName").UUID

其中,“remoteComputerName”是远程计算机的名称或IP地址。这个命令将返回远程计算机的 UUID。


GUID(Globally Unique Identifier)是一种全局唯一标识符,也称为UUID(Universally Unique Identifier)。它是一个128位的数字标识符,通常以字符串形式表示。GUID的生成是基于算法和计算机主机的唯一标识信息,因此在理论上,它在全球范围内是唯一的。

GUID的主要目的是用于标识对象或实体,确保其在不同系统、不同时间和不同环境中的唯一性。以下是一些常见的用途:

  1. 数据库记录标识:在数据库中,GUID可以用作主键,确保记录的唯一性,无论记录是在单个数据库还是不同数据库之间进行操作。
  2. 软件开发:GUID在软件开发中广泛应用。例如,它可以用于标识组件、类、接口、文件等,确保其唯一性,避免命名冲突。
  3. 全球唯一标识:由于GUID的全局唯一性,它被用于创建全局唯一的标识符。例如,在分布式系统中,可以使用GUID作为节点或实体的唯一标识。
  4. 文档和资源标识:GUID可用于唯一标识文档、资源或文件,以便进行跟踪、索引和引用。
  5. 唯一性约束:GUID可用于在系统中创建唯一性约束,确保某些值的唯一性,如订单号、用户标识等。

 GUID是一种用于确保全球范围内的唯一性的标识符。它在许多领域中被广泛应用,以解决唯一性标识和避免命名冲突的问题。


 

posted @ 2024-02-25 12:30  suv789  阅读(446)  评论(0)    收藏  举报