仅使用 cmd 和 psexec 远程注册表更改 HKCU

问题描述 投票:0回答:4

大家好我迷路了...

我有管理员权限。

我想修改 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”的 SID
psexec \\COMPUTERNAME reg add HKEY_USERS\SID\SOFTWARE\Microsoft\...... /t REG_DWORD

有什么办法解决这个问题吗?

我只需要在不使用 PowerShell 的情况下为当前登录的用户在远程 PC 上编辑 HKCU

cmd registry psexec
4个回答
0
投票

首先,如果您有权访问 PowerShell,您可以使用它来获取 SID,然后在您的计算机上运行 PSExec。尝试运行:

Get-AdUser USERNAME -Properties SID |选择名称,Sid

在 PowerShell 中,将 USERNAME 替换为您要编辑的人的用户名。

这应该从活动目录中获取 SID,因为 WMIC 等本地命令不会获取您要查找的内容。

一旦你有了 SID,你就可以在你的 PSExec 命令中重击它并释放地狱天使。

我提到使用 PowerShell 是因为即使没有启用远程注册表,您也应该能够以系统管理员身份运行此命令。如果没有,您也可以直接进入 Active Directory。


0
投票

在 cmd 中,您可以使用

PsGetSid
获取 SID。

我正在尝试与管理员相同的过程..


0
投票

我想您的目标 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%

0
投票

您可以使用:

Reg load HKCU\UserTemp c:\users\<username>\NTUSER.DAT

和:

Reg unload HKCU\UserTemp
© www.soinside.com 2019 - 2024. All rights reserved.