You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以同账号不同大小写启动Windows子进程且无需密码

问题解决方案

Windows内核层面用户身份以SID为唯一标识,用户名大小写仅为显示属性,不存在大小写不同的两个独立同SID账户,不需要获取用户密码即可实现需求,以下是两种可直接落地的方案:

方案1:复制自有令牌创建子进程(无额外注入)

  • 调用OpenProcessToken打开当前服务进程的访问令牌,申请TOKEN_DUPLICATE、TOKEN_QUERY、TOKEN_ADJUST_DEFAULT权限
  • 调用DuplicateTokenEx将当前令牌复制为主令牌(Primary Token),注意不要生成模拟级别令牌,模拟令牌无法直接用于创建新进程
  • 调用SetTokenInformation传入TokenUser信息类,将令牌关联的用户名显示值修改为小写的user1234,这一步不会修改系统SAM库中的账户信息,仅修改当前令牌副本的显示字段
  • 调用CreateProcessWithTokenW传入修改后的令牌启动第三方工具,该接口不需要提供用户密码,仅要求持有合法的对应账户主令牌即可完成进程创建

注意:该方案在部分开启了强制令牌完整性校验的Windows Server版本上可能触发ERROR_BAD_TOKEN_TYPE错误,测试时需要覆盖目标部署环境的系统版本。

方案2:挂起进程+API Hook(兼容性最高,推荐)

这个方案完全不触碰系统令牌的敏感修改逻辑,稳定性最好:

  • 调用CreateProcess启动第三方工具时,传入CREATE_SUSPENDED标志,让子进程初始化完成后保持主线程挂起状态,不执行入口代码
  • 向挂起的子进程注入一个体积极小的轻量DLL,DLL仅做逻辑:Hook GetUserNameA、GetUserNameW、GetUserNameExA、GetUserNameExW四个用户名查询API,当检测到调用方是第三方工具主模块时,直接返回小写的user1234,其余所有调用全部透传给系统原生API
  • 调用ResumeThread恢复子进程主线程运行,第三方工具后续所有用户名查询操作拿到的都是符合要求的小写值
  • 整个流程不需要获取、存储用户密码,也不会修改系统全局配置,所有改动仅在目标子进程内部生效,不会影响服务本身或其他进程的运行逻辑

不推荐的路径说明

  • 不要尝试调用LogonUser系列接口生成小写用户名的令牌,这类接口必须传入明文密码,不符合你的安全约束
  • 不需要尝试做跨大小写的身份模拟,Windows内核层面USER1234和user1234对应同一个SID,不存在两个独立身份,模拟逻辑没有意义
  • 直接用.NET默认的Process.Start或原生CreateProcess启动子进程会直接继承父进程令牌的用户名字段大小写,无法满足第三方工具的校验要求

内容的提问来源于stack exchange,提问作者PersonalNexus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:51:17