大家好我迷路了...
我有管理员权限。
我想修改 HKEY_CURRENT_USER\Software... 中的注册表项....在另一个用户登录的远程 PC 上。
我不想使用 PowerShell,因为我们没有启用远程注册表。
我被 cmd 困住了
因此我使用PSexec。
如果我想改变全球 HKLM 中的某些东西,这很容易
psexec \\COMPUTERNAME reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\...... /t REG_DWORD
因为我将 psexec 称为管理员,所以它允许我更改远程计算机上 HKLM 中的任何内容
但是当我需要在 HKCU 中更改某些内容时,我需要用户的 SID 将其插入 HKEY_USERS\SID\SOFTWARE\,这就是我碰壁的地方......
我试过这样的东西(没用,语法可能全错了)
psexec \\COMPUTERNAME for /F "skip=1 tokens=1" %%i in ('query user') do set varusername=%%i
这应该将远程登录的用户名放入变量“varusername”中,以便稍后使用它来获取 SID
像这样(同样语法可能是错误的):
psexec \\COMPUTERNAME wmic useraccount where name='%varusername%' get sid
这完全失败了,因为远程计算机上的 wmic 以管理员身份(通过 psexec)执行时看不到与查询用户相同的用户...
这里是各个命令的输出
查询用户 给我登录的用户名'johndoe'
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
johndoe console 1 活动无 9/10/2018 5:27
wmic 用户帐户获取名称,sid 根本看不到“johndoe”
名称 SID
默认账户 S-1-5-21-3285310242-2953612481-1302521585-503
默认用户0 S-1-5-21-3285310242-2953612481-1302521585-1002
本地管理员 S-1-5-21-3285310242-2953612481-1302521585-500
客S-1-5-21-3285310242-2953612481-1302521585-501
所以你可以看到我撞墙了
query user 给我远程 PC“johndoe”上的登录用户,但我无法使用 wmic useraccount 将其插入:
获取“johndoe”的 SIDpsexec \\COMPUTERNAME reg add HKEY_USERS\SID\SOFTWARE\Microsoft\...... /t REG_DWORD
有什么办法解决这个问题吗?
我只需要在不使用 PowerShell 的情况下为当前登录的用户在远程 PC 上编辑 HKCU
首先,如果您有权访问 PowerShell,您可以使用它来获取 SID,然后在您的计算机上运行 PSExec。尝试运行:
Get-AdUser USERNAME -Properties SID |选择名称,Sid
在 PowerShell 中,将 USERNAME 替换为您要编辑的人的用户名。
这应该从活动目录中获取 SID,因为 WMIC 等本地命令不会获取您要查找的内容。
一旦你有了 SID,你就可以在你的 PSExec 命令中重击它并释放地狱天使。
我提到使用 PowerShell 是因为即使没有启用远程注册表,您也应该能够以系统管理员身份运行此命令。如果没有,您也可以直接进入 Active Directory。
我想您的目标 PC 在 AD 基础设施中工作。
本示例演示了 3 个主要步骤:
WMIC path Win32_LogonSession
WMIC path Win32_LoggedonUser
SID
- WMIC path Win32_UserAccount
附言如果您计划在终端服务器上与多个用户一起工作,请创建子程序来处理许多
LogonId
值-%Id%
变量。
P.P.S. 此示例搜索两种类型的登录用户:网络(3)或远程交互(10):第一行的
LogonType
值。
FOR /f "skip=1" %%i in ('WMIC path Win32_LogonSession where "LogonType=3 or LogonType=10" get LogonId ^| findstr /r /v "^$" ') DO SET "Id=%%i"
FOR /f "usebackq skip=1 tokens=2,3 delims== " %%a in (`WMIC path Win32_LoggedonUser where " Dependent = '\\\\.\\root\\cimv2:Win32_LogonSession.LogonId="%Id%"' " get Antecedent`) DO SET "User=%%a%%b"
FOR /f tokens^=1-3^ delims^=^" %%a in ("%User%") do SET "domain=%%a" & set "User=%%c"
FOR /f "usebackq skip=1 " %%a in (`WMIC path Win32_UserAccount where " name='%user%' and domain='%Domain%' " get sid ^| findstr /r /v "^$" `) DO SET "sid=%%a"
@echo %sid%
您可以使用:
Reg load HKCU\UserTemp c:\users\<username>\NTUSER.DAT
和:
Reg unload HKCU\UserTemp