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 采用子系统隔离式对象命名与标识模型:
- 安全子系统(LSASS):核心标识为 SID(Security Identifier),用于主体安全身份(用户、组、登录会话、域内置账号),安全访问控制 ACL/ACE 全部依靠 SID 做判定;用户名只是人类可读别名,可修改,不用于内核权限校验。
- 进程 / 线程管理器(内核对象管理器):PID(进程 ID)、TID(线程 ID)、各类句柄 (HANDLE,窗口句柄、文件句柄、连接句柄、图像句柄);句柄是当前进程内的索引值,不是全局唯一 ID。
- 网络子系统(NDIS/TCPIP):MAC(网卡硬件标识)、IP 地址(三层逻辑地址)、端口号(传输层多路复用标识)、计算机名 / 主机名(NetBIOS/DNS 名称)。
- 文件系统:文件名、本地驱动器号、本地路径、UNC 网络共享路径;NTFS 内部还有文件引用 ID(FileId)(文档清单中未列出,NTFS 底层唯一文件标识)。
- 注册表:注册表项(Key)、注册表值(Value),使用注册表路径定位配置节点。
- COM/DCOM:GUID/CLSID/IID,用来全局唯一标记 COM 类、接口。
- 通用唯一标识:GUID/UUID,128 位,由系统 API 生成,用于跨机器、跨组件全局标识对象(硬件 UUID、组件、安装包)。
- 事件与错误体系:EventID 事件 ID、系统错误码 Win32 ErrorCode,用于日志、API 返回错误。
核心底层区分:
- 全局唯一标识符:SID、GUID/UUID、MAC、NTFS FileId、硬件 UUID;跨进程、跨重启保持稳定(部分例外) 仅本会话 / 本进程唯一:PID、TID、窗口句柄、文件句柄;重启 / 进程重建后会变
- 可读别名(可修改,不保证唯一):用户名、组名、计算机名、文件名、窗口类名、服务显示名
二、依赖文件
| 文件 | 作用 |
|---|---|
lsass.exe + secur32.dll、authz.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 |
三、依赖关系
- SID 体系依赖 LSASS 安全子系统。
- 本地账号 SID 存在 SAM 数据库
C:\Windows\System32\config\SAM;域账号 SID 存储在 AD 域数据库(NTDS.dit) ProfileList注册表子键,将 SID 与用户配置文件路径绑定。
- 本地账号 SID 存在 SAM 数据库
- PID/TID、句柄依赖内核对象管理器;句柄是进程私有句柄表索引,内核内部有全局对象 ID。
- GUID 生成依赖
UuidCreateAPI(rpcrt4.dll);New-Guid底层调用这个 Win32 API。 - 硬件 UUID:存储在主板固件 BIOS/UEFI,WMI 读取固件信息,不是操作系统生成。
- 名称解析依赖 DNS/NetBIOS;计算机名保存在注册表
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName。 - 权限依赖:
- 查询本地用户 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:查询当前登录用户 SIDwmic useraccount:WMI 查询用户 SIDGet-LocalUser(PowerShell):本地安全账户管理器查询用户 SIDtasklist:枚举 PIDhandle.exe(Sysinternals):查看各类内核对象句柄Get-NetAdapter:读取 MAC、网卡标识reg query:读取注册表 ProfileList 用户 SID 映射
五、逻辑链路(时序,以【用户名转 SID】为例)
- 输入用户名(可读别名);
- API 调用
LookupAccountName,提交用户名 + 域名给 LSASS; - LSASS 查询本地 SAM 数据库(或远程 AD 域);
- SAM/AD 查找匹配账号,返回SID(安全子系统唯一身份标识);
- 返回 SID 到上层应用(PowerShell/whoami/wmic);
- 上层程序格式化输出 SID 字符串
S-1-5-21-xxxx-xxxx-xxxx-500。
反向转换:SID → 用户名,调用
LookupAccountSid,LSASS 做 SID 到账号名称翻译。
六、边界约束(重点边界、常见误区)
- 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 机器固定不变。
- 句柄边界
- 窗口句柄、文件句柄仅在当前进程 / 会话有效,不是全局唯一 ID;进程重启句柄值全部失效;内核对象本身拥有全局唯一对象 ID,句柄只是进程内索引。
- PID 边界
- PID 是系统会话内唯一,系统重启后 PID 全部重置;系统会复用 PID(进程退出后,PID 可分配给新进程)。
- GUID/UUID 边界
New-Guid生成的是随机 GUID(版本 4),不绑定硬件;主板硬件 UUID 是固件烧录,版本 1,绑定硬件。- GUID 理论全局唯一,但人为复制粘贴可重复;仅算法保证极低碰撞概率,不是密码学绝对唯一。
- 名称类标识符(用户名、计算机名、文件名)
- 只是人类可读别名,允许重复(在部分场景),可以随时修改;系统内核安全、对象查找不依赖名字,依赖底层 ID。
- MAC 地址边界
- MAC 可以在驱动层软件篡改;操作系统读到的 MAC 是 NDIS 上报值,不一定等于网卡出厂烧录 MAC。
- UNC 路径边界
- UNC
\\server\share依赖名称解析(DNS/NetBIOS);计算机名称改变,UNC 路径失效;底层访问最终依赖 SMB 会话 + 目标 SID 校验。
- UNC
- 文件描述符概念澄清
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 对象、日志、虚拟化子系统内另外一批关键标识符,附带属性;后面汇总横向对比表。
一、内核 & 对象管理器类
- 对象名称(NT Object Name) 示例:
\Device\HarddiskVolume1、\BaseNamedObjects\MyEvent- 所属:内核对象管理器
ntoskrnl.exe - 作用:内核路径命名空间,标识设备、事件、信号量、互斥体、端口等内核对象;用户态 NtOpenObject 通过此名称打开对象
- 唯一性:内核全局命名空间唯一;重启后动态对象消失,设备对象一般重启重建
- 所属:内核对象管理器
- 对象 ID(Object ID,内核对象) 内核内部对每个活动内核对象分配的唯一 64bit 标识,用户态无直接 API 读取,仅内核调试(WinDbg)可见;进程 / 线程内核对象都有。
- Session ID(会话 ID) 终端服务会话编号,0 = 控制台会话,1、2… 远程桌面会话;标识登录会话桌面环境;同机器多用户远程登录依靠 Session ID 隔离。
- 登录会话 ID(LUID,Locally Unique Identifier) LUID 64 位本地唯一 ID,LSASS 生成;代表一次登录会话,一个用户账号可以同时存在多个 LUID(多次登录);令牌 Token 内部携带 LUID,用于跟踪登录凭证上下文。
- Token ID(访问令牌 ID) 访问令牌 (Token) 的唯一标识,LSASS 维护;每个登录会话生成安全令牌,用于权限判定。
二、磁盘 / 文件系统 / 存储子系统
- Volume GUID(卷 GUID,也叫卷唯一 ID) 格式:
\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\- NTFS/FAT 格式化卷生成;分区不变则永久保留,不依赖盘符;盘符可以删除 / 更换,但 Volume GUID 不变
- 用途:绕过盘符,直接定位磁盘分区;DiskPart、VSS 卷影复制大量使用
- VCN(Virtual Cluster Number,虚拟簇号) NTFS 文件内的簇偏移;定位文件内部的磁盘簇,文件系统底层元数据标识。
- MFT 记录号(MFT Record Number) NTFS 主文件表记录编号,每个文件 / 目录占用一条 MFT 记录;分区内唯一,就是前面提到 FileId 的组成部分。
- Disk Signature(磁盘签名,MBR 磁盘) / GPT Disk Unique Partition GUID
- MBR 磁盘:4 字节磁盘签名,写在磁盘扇区;Windows 用来识别磁盘
- GPT:每个分区自带 Partition GUID(分区全局唯一 ID),磁盘本身也有 Disk GUID;重装系统不改变分区 GUID
- VSS 快照 ID(Shadow Copy ID) 卷影副本快照 GUID,每个快照实例唯一;用于备份、文件历史、系统还原。
三、安全 & 认证子系统
- LSA Policy ID / Secret Key ID LSA 保护密钥标识,LSASS 管理 LSA Secrets(存储账号凭据、机器域密码)。
- 权限特权 ID(LUID for Privileges) 系统特权(SeDebugPrivilege、SeTakeOwnershipPrivilege)内部使用 LUID 标识。
- 安全描述符 SD 的 SID+ACE(前面已有 SID,补充:ACL 内部 ACE 标识符)
- 机器 SID(Machine SID) 本地计算机本身 SID,本地所有账户 SID 的前缀
S-1-5-21-MachineSID-RID;域环境中机器账号(COMPUTER$)使用域 SID。
四、驱动、设备、PnP 即插即用子系统
- Device Instance ID(设备实例 ID,PnP) 示例:
USB\VID_xxxx&PID_xxxx\6&xxxx- PnP 管理器分配;系统中每一个接入硬件实例唯一;同型号两个 U 盘,Device Instance ID 不同
- 存储在注册表
HKLM\SYSTEM\CurrentControlSet\Enum\
- Hardware ID / Compatible ID 硬件厂商上报的硬件标识符,用于匹配驱动包;一个设备可多个 HardwareID;不是实例唯一,同型号硬件 HardwareID 相同。
- Class GUID(设备类 GUID) 设备大类 GUID,如网卡类、磁盘类、USB 类 GUID;用于归类硬件设备,匹配设备安装类。
五、COM / RPC / 应用组件
- IID(Interface ID):COM 接口 GUID,标识接口;
- CLSID(Class ID):COM 类 GUID,标识 COM 组件类;
- ProgID:可读别名,映射 CLSID(字符串,可重复,可修改注册表修改映射)
- RPC Interface UUID:RPC 接口唯一 UUID,RPC 服务注册使用,rpcss 端点映射器依靠 UUID 查找 RPC 服务。
六、网络子系统补充
- IPv6 接口 ID / 接口索引(IfIndex) 网卡接口索引号(整数,如 3、4),IP Helper API 核心标识,本机系统内网卡唯一数字 ID;很多 netsh/powershell 网络命令用 IfIndex 定位网卡,比网卡名称更稳定。
- Flow Label(IPv6 流标签):IPv6 头部 20bit 标识符,标记同一流数据包,QoS 使用。
- Connection ID(TCP 连接 ID,TCP 四元组:源 IP: 端口 + 目标 IP: 端口) TCP 连接靠四元组全局唯一标识一条 TCP 会话。
- SSRC(RTP 同步源标识符):Windows 媒体栈、WebRTC 使用。
七、进程 / 线程 / 映像补充
- ETW Provider GUID:ETW 事件追踪提供者 GUID,每个日志提供者唯一。
- ImageBase 映像基址:PE 加载到内存的起始虚拟地址,不是全局 ID,单次加载有效;ASLR 每次启动会变化。
- PE 映像校验和:PE 文件头部校验值,用于驱动 / 映像完整性校验。
八、WMI / 日志 / 事件体系
- WMI Namespace 路径:
root\cimv2这类命名空间标识 - WMI Class ID / WMI Class Name:WMI 类标识(Win32_Process 等字符串标识)
- EventLog Channel GUID:事件日志通道唯一 GUID
- Activity ID(事件活动 ID,GUID) 事件追踪、ETW 日志中,关联一次业务操作的多条事件;跨进程跟踪一次事务。
九、虚拟化 / 容器(Windows 容器、Hyper-V)
- VM Instance ID(Hyper-V 虚拟机实例 GUID),虚拟机唯一标识
- Container ID(容器实例 ID),Windows 容器实例 GUID
- 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 虚拟化 | ✅全局 | ✅虚拟机存在就保留 | ❌新建虚拟机生成 | 虚拟机实例标识 |
边界要点(新增标识符高频误区)
- LUID:本地唯一,跨机器不保证唯一,专用于登录会话与特权;和 SID 完全不同。
- Volume GUID:格式化分区会重新生成全新 GUID;删除盘符不会修改卷 GUID。
- Device Instance ID:同一 U 盘插不同 USB 口,Device Instance ID 会变化;HardwareID 不变。
- IfIndex:系统网卡增删(VPN / 虚拟网卡添加删除),IfIndex 可能变动,不适合长期静态脚本硬编码。
- CLSID/ProgID:ProgID 只是字符串别名,CLSID 才是 COM 底层唯一标识;修改注册表可把 ProgID 绑定到别的 CLSID。
Windows 标识符体系 继续补充清单
承接前面两批,继续挖掘内核、存储、安全、网络、PE、缓存、事务、证书、I/O、打印、WFP 等子系统内的标识符,附带属性。
一、内核、I/O、对象管理器
- IRP 数据包 ID I/O 请求包 IRP,内核 I/O 操作的工作载体;内核内部标记 IRP 实例 ID,用于跟踪单次 I/O 请求;仅本次 I/O 生命周期有效,用户态不可直接读取。
- 内核回调对象 ID(Callback Object ID) 内核回调注册对象,用于驱动通知(进程创建、镜像加载回调),内核内部唯一标识。
- KTHREAD / EPROCESS 内核对象地址(内核虚拟地址) 内核调试(WinDbg)使用,
EPROCESS是进程内核结构体;不是持久 ID,每次加载地址改变,ASLR 会改变。 - Wait Object Key(等待对象 Key) 用于同步对象(事件、互斥体)等待操作的内核标识。
二、文件系统 / 存储 / 事务子系统
- USN Journal ID(USN 日志序列号,Update Sequence Number) NTFS 变更日志,每个文件修改生成递增 USN;分区内单调递增,用于文件变更审计、备份、文件索引(Windows Search)。
- ReFS Object ID ReFS 文件系统的对象 ID,类似 NTFS ObjectId,可跨卷跟踪文件。
- Transaction ID(TxF 事务 ID,NTFS 事务) NTFS 事务型文件操作(TxF)的事务 GUID;TxF 在 Win10 1709 后弃用。
- File Object ID(NTFS ObjectId) 可选文件级 GUID,应用可设置;用于分布式链接跟踪,移动文件后仍可定位。
- Chunk ID(重复数据删除块 ID,Data Deduplication) 存储块唯一哈希 ID,Windows 服务器重复删除功能使用;相同内容共用同一个 Chunk ID。
- Storage Pool ID / Virtual Disk ID(存储池、存储空间) Windows 存储空间 (Storage Spaces),存储池 GUID、虚拟磁盘 GUID,标识池与虚拟磁盘。
三、安全、证书、密码、加密子系统
- Cert Hash / Thumbprint(证书指纹) X.509 证书 SHA1/SHA256 指纹,用来唯一标识证书;存储在证书存储区
Cert:\。 - Cert Serial Number(证书序列号) CA 签发证书时分配;同一 CA 下唯一标识一张证书。
- Key Container Name(密钥容器名称) CNG/CAPI 加密密钥容器标识,保存 RSA/ECC 私钥。
- CNG Key ID(Key Identifier) CNG 下一代加密 API,密钥对象唯一标识 GUID。
- Hash ID(安全哈希) 文件哈希 SHA256/SHA1/MD5;内容唯一,文件改名 / 移动不改变哈希,修改内容哈希立即变化。
- AppModel Package Family Name / Package Full Name UWP/MSIX 应用包标识:
PackageFullName包含版本、架构;PackageFamilyName不带版本,作为家族固定标识。 - Capability ID(UWP 能力 ID) UWP 应用声明的权限能力 GUID,如互联网访问、文件访问能力。
四、PnP、驱动、电源、WFP 网络过滤平台
- Filter Driver Instance ID(WFP 过滤器实例 ID) Windows Filtering Platform(WFP),每一条防火墙 / 数据包过滤规则有 FilterID(LUID 类型)。
- Callout ID(WFP 标注 ID) WFP 的 Callout 驱动回调标识,用于自定义数据包处理。
- Provider Context ID(WFP 上下文 ID) WFP 附加的自定义上下文对象 ID。
- Power Setting GUID(电源策略 GUID) 电源子系统,每一项电源参数(屏幕亮度、休眠超时)使用 GUID 标识。
五、网络子系统新增
- IPsec SA ID(安全关联 ID) IPsec VPN,安全关联 SA 的 LUID,标识一条加密隧道会话。
- QoS Flow ID(QoS 流 ID) Windows 流量 QoS 子系统,标记 QoS 流。
- Neighbor Cache Entry ID(邻居缓存条目 ID) ARP/ND 缓存条目内部标识,存储 IP-MAC 映射。
- Interface Alias + Interface Description 网卡友好名称 / 硬件描述字符串(别名,可重复,可修改),和 IfIndex 配套使用。
六、进程、PE、内存、ETW
- PE File Signature ID(Authenticode 签名证书 ID) 可执行文件数字签名标识。
- Process Token LogonId(令牌内部 LUID) 访问令牌内部携带的登录会话 LUID。
- ETW Event ID + Event Opcode + Task ETW 事件元数据标识,EventID 是事件编号,Opcode/Task 用来分类事件。
- ETW Session GUID ETW 跟踪会话的唯一 GUID,用来区分不同的跟踪会话。
- Memory Region Allocation Handle 进程虚拟内存分配句柄,本进程内有效。
七、打印、服务、任务计划
- Print Job ID(打印作业 ID) Print Spooler 打印队列内作业编号,仅在打印服务运行期间有效,重启打印服务重置。
- Service Control Handle(服务控制句柄) OpenSCManager/OpenService 返回句柄,进程内有效,操作 Windows 服务。
- Task Scheduler Task ID / Task Path 任务计划程序:TaskPath 为 XML 任务路径;任务有注册任务 GUID 标识。
- Trigger ID(任务计划触发器 ID) 任务的触发器唯一标识。
八、远程管理、域、LDAP
- DN(Distinguished Name,可分辨名称) Active Directory LDAP 对象唯一名称:
CN=User,OU=xxx,DC=xxx,AD 内定位对象。 - ObjectGUID(AD 对象 GUID) AD 每个对象(用户、组、计算机)内置 ObjectGUID,全局唯一,对象生命周期永久不变(比 SID 更稳定;SID 可在特殊场景迁移修改,ObjectGUID 不会)。
- Domain GUID(域 GUID) AD 域的全局唯一 GUID 标识整个域。
- 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) | 存储重复删除 | ✅内容哈希全局 | ✅存储池内持久 | ❌由内容哈希生成 | 重复数据删除 |
新增边界误区
- AD
ObjectGUIDvs SID:ObjectGUID终身绑定 AD 对象,跨域迁移对象时 ObjectGUID 保留;SID 在跨域迁移场景可更换,所以 AD 资产跟踪优先用 ObjectGUID。 - USN 序列号:分区格式化后 USN 日志重置,序号从 0 重新开始;USN 仅代表分区内变更顺序。
- 证书指纹:指纹只是哈希,不是证书本身;两张不同证书存在理论哈希碰撞(SHA256 几乎不可能,但原理上不是绝对唯一)。
- WFP FilterID 是 LUID,重启机器、重启 WFP、删除重建规则,FilterID 会变,不要硬编码写在脚本里长期引用。
- PrintJobID:仅仅是打印池内存中的编号;重启 spooler 服务,所有打印任务 ID 全部清零重新分配。
Windows 10中还有其他类似的标识符和概念。以下是一些常见的:
-
用户名(Username):每个用户在系统中都有一个唯一的用户名,用于登录和识别用户身份。
-
用户ID(User ID):每个用户在系统中都有一个唯一的用户ID,用于在系统级别上标识用户。Windows系统中使用的是SID(Security Identifier)来唯一标识用户
-
组(Group):组是一种将多个用户集合在一起的机制。每个组都有一个唯一的组ID。
-
组ID(Group ID):每个组在系统中都有一个唯一的组ID,用于在系统级别上标识组。
-
计算机名(Computer Name):计算机名是给计算机分配的唯一标识符,用于在网络中识别计算机。
-
主机名(Host Name):主机名是计算机在网络中的名称,用于标识特定的计算机。
-
IP地址(IP Address):IP地址是用于在网络中标识计算机的数字标识符。
-
文件名(File Name):文件名是用于在文件系统中标识特定文件的名称。
-
文件路径(File Path):文件路径指定了文件在文件系统中的位置,包括目录和文件名。
-
注册表项(Registry Key):注册表项是Windows操作系统中用于存储配置信息的数据库条目。
-
进程ID(Process ID):每个正在运行的程序都有一个唯一的进程ID,用于在系统中标识该进程。
-
服务名(Service Name):服务名是用于标识在系统中运行的服务的名称。
-
窗口句柄(Window Handle):窗口句柄是用于在Windows系统中标识窗口的唯一标识符。
-
MAC地址(MAC Address):MAC地址是用于在网络中标识网络适配器的物理地址。
-
端口号(Port Number):端口号是在网络通信中用于标识应用程序或服务的数字标识符。
-
UNC路径(UNC Path):UNC路径是一种用于在网络中标识共享文件夹的路径格式。
-
连接句柄(Connection Handle):连接句柄是用于在Windows中标识网络连接的唯一标识符。
-
图像句柄(Image Handle):图像句柄是用于在Windows中标识正在运行的程序的图像的唯一标识符。
-
GUID(Globally Unique Identifier):全局唯一标识符,用于在系统中唯一标识对象或实体。
-
文件描述符(File Descriptor):在操作系统中用于标识已打开文件的整数值。
-
线程ID(Thread ID):每个线程在系统中都有一个唯一的线程ID,用于标识特定线程。
-
COM对象标识符(COM Object Identifier):用于在Component Object Model (COM) 中标识COM对象的唯一标识符。
-
窗口类名(Window Class Name):用于在Windows系统中标识窗口类的名称。
-
驱动器号(Drive Letter):在Windows系统中用于标识存储设备或磁盘分区的字母。
-
事件ID(Event ID):在Windows系统中用于标识特定事件的唯一标识符。
-
系统错误码(System Error Code):在Windows系统中用于标识特定系统错误的数字代码。
-
计算机描述符(Computer Descriptor):在Windows系统中用于描述计算机的信息,例如操作系统版本、硬件配置等。
-
DLL名称(DLL Name):动态链接库文件名,用于在Windows系统中标识特定的DLL文件。
-
计算机名(Computer Name):用于在网络中标识计算机的名称。
-
用户名(User Name):用于在系统中标识用户的名称。
-
注册表项值(Registry Value):注册表中存储的配置信息的键值对。
-
程序包名(Package Name):用于标识Windows应用程序包的名称。
-
错误日志条目(Error Log Entry):记录在系统日志中的错误信息条目。
-
文件路径(File Path):用于在文件系统中标识文件或文件夹的路径。
-
注册表键(Registry Key):注册表中存储的配置信息的分类标识。
-
IP地址(IP Address):用于在网络中标识设备的唯一地址。
-
系统环境变量(System Environment Variable):在操作系统中定义的全局变量,用于配置系统行为和应用程序运行。
-
进程ID(Process ID):每个运行的进程在系统中都有一个唯一的进程ID,用于标识特定进程。
Windows 用户的 SID(安全标识符)是一个唯一的标识符,用于标识系统中的每个用户账户。你可以通过多种方法查询用户的 SID,包括使用注册表、命令行工具和 PowerShell 命令。下面是如何通过这些方法查询用户 SID 的步骤:
1. 通过注册表查询用户 SID
在 Windows 注册表中,你可以找到用户 SID 信息。SID 存储在以下位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
每个子键对应一个用户 SID,并且键值 ProfileImagePath 存储了与该 SID 关联的用户配置文件路径。
步骤:
- 打开 注册表编辑器(按
Win + R,输入regedit,然后回车)。 - 导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList。 - 查找各个子键(每个子键的名称是 SID),并查看
ProfileImagePath键对应的路径。
通过注册表,你可以找到每个用户的 SID。
2. 通过 CMD 命令查询用户 SID
在命令行中,使用 wmic 或 whoami 命令来查询当前用户或其他用户的 SID。
2.1 查询当前用户的 SID:
使用 whoami 命令与 SID 参数来查询当前用户的 SID。
whoami /user
这会显示当前用户的用户名和 SID。
2.2 查询特定用户名的 SID:
如果你想查询其他用户的 SID,可以使用 wmic 命令:
wmic useraccount where name='用户名' get sid
替换 用户名 为你想查询的用户的用户名。
例如,如果你想查询 Administrator 用户的 SID:
wmic useraccount where name='Administrator' get sid
3. 通过 PowerShell 查询用户 SID
在 PowerShell 中,使用 Get-LocalUser 或 Get-WmiObject 来查询本地用户的 SID。
3.1 查询当前用户的 SID:
可以通过以下 PowerShell 命令查询当前用户的 SID:
([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
这会返回当前登录用户的 SID。
3.2 查询指定用户名的 SID:
使用 Get-LocalUser 命令查询本地用户的 SID:
Get-LocalUser -Name "用户名" | Select-Object Name, SID
替换 用户名 为你想查询的用户。
例如,查询 Administrator 用户的 SID:
Get-LocalUser -Name "Administrator" | Select-Object Name, SID
3.3 使用 Get-WmiObject 查询用户 SID:
你也可以使用 Get-WmiObject 查询特定用户的 SID:
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:
# 获取本地计算机上所有用户的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查看当前用户所属的用户组信息,可以使用以下命令:
# 获取当前用户所属的所有用户组
$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):
# 获取计算机名称
$computerName = $env:COMPUTERNAME
$computerName
这个命令将输出当前计算机的名称。您可以直接在PowerShell中运行这个命令,并查看输出结果即可得知当前计算机的名称。
PowerShell中,您可以使用以下命令生成一个新的GUID(Globally Unique Identifier):
# 生成一个新的GUID
New-Guid
运行上述命令将在控制台中生成一个新的GUID,并将其显示出来。GUID是一种唯一标识符,通常用于标识对象或实体,在许多情况下被用于确保全局唯一性。
如果您想将生成的GUID保存到变量中以便后续使用,可以将命令修改为:
# 生成一个新的GUID并保存到变量
$guid = [System.Guid]::NewGuid()
$guid
这样生成的GUID将保存在变量 $guid 中,并可以随时访问。
PowerShell 中,您可以使用以下命令查询本地计算机的 UUID(Universally Unique Identifier):
# 查询本地计算机的 UUID
(Get-WmiObject Win32_ComputerSystemProduct).UUID
这个命令将返回本地计算机的 UUID。如果您需要查询远程计算机的 UUID,可以将命令修改为:
# 查询远程计算机的 UUID
(Get-WmiObject Win32_ComputerSystemProduct -ComputerName "remoteComputerName").UUID
其中,“remoteComputerName”是远程计算机的名称或IP地址。这个命令将返回远程计算机的 UUID。
GUID(Globally Unique Identifier)是一种全局唯一标识符,也称为UUID(Universally Unique Identifier)。它是一个128位的数字标识符,通常以字符串形式表示。GUID的生成是基于算法和计算机主机的唯一标识信息,因此在理论上,它在全球范围内是唯一的。
GUID的主要目的是用于标识对象或实体,确保其在不同系统、不同时间和不同环境中的唯一性。以下是一些常见的用途:
- 数据库记录标识:在数据库中,GUID可以用作主键,确保记录的唯一性,无论记录是在单个数据库还是不同数据库之间进行操作。
- 软件开发:GUID在软件开发中广泛应用。例如,它可以用于标识组件、类、接口、文件等,确保其唯一性,避免命名冲突。
- 全球唯一标识:由于GUID的全局唯一性,它被用于创建全局唯一的标识符。例如,在分布式系统中,可以使用GUID作为节点或实体的唯一标识。
- 文档和资源标识:GUID可用于唯一标识文档、资源或文件,以便进行跟踪、索引和引用。
- 唯一性约束:GUID可用于在系统中创建唯一性约束,确保某些值的唯一性,如订单号、用户标识等。
GUID是一种用于确保全球范围内的唯一性的标识符。它在许多领域中被广泛应用,以解决唯一性标识和避免命名冲突的问题。

浙公网安备 33010602011771号