我现在在一台运行 Windows 2000 的“古老”机器上。
我正在尝试使用 Sysinternals 获取运行 Windows 7 x64 的远程计算机上正在运行的进程列表pslist
:
pslist \\192.168.199.2 -u admin -p password
其中admin
和password
对应于该计算机上具有管理权限的帐户。但它失败了,说客户端没有所需的权限。
同时,我可以通过以下方式打开该计算机上的隐藏管理共享,例如,
\\192.168.199.2\c$
在 Windows 资源管理器中并以 的身份完全访问文件系统admin
。
我还可以成功执行以下操作以获取完整的目录列表:
net use \\192.168.199.2\Admin$ /user:admin
dir \\192.168.199.2\Admin$
net use \\192.168.199.2\Admin$ /delete
在这一页据说如果这些命令有效,那么也应该可以运行 PSTools 命令\\192.168.199.2
。
当然,如果我pslist
直接在该机器上运行并登录该admin
帐户,它就可以完美运行。
为什么pslist
无法远程获取正在运行的进程列表?作为管理员,我该怎么做才能允许使用 Sysinternals psTools 进行远程进程操作?
答案1
我能够通过以下方式解决问题:
1)需要Remote Registry
在运行Windows 7的目标机器上运行该服务。本文描述步骤:
点击开始,点击开始寻找框中,键入
services.msc
,然后按Enter。Microsoft 管理控制台将启动,服务管理单元将打开。在控制台窗格中,右键单击
Remote Registry
并单击开始。
使用此控制台,我已将Remote Registry
服务配置为自动启动。
2)在客户端机器上,我cmd.exe
使用目标机器的帐户名和密码运行另一个副本(请注意将 IP 和用户名分隔开的反斜杠!):
runas /netonly /user:192.168.199.2\admin cmd
执行上述命令后会提示输入密码,输入密码后点击打开Enter新窗口"cmd ( run as 192.168.199.2\admin )"
。
3)在新窗口中执行:
pslist \\192.168.199.2
这按预期工作。请注意,不需要指定用户名和密码。
我还可以终止远程机器上的任何进程,例如终止远程cmd.exe
进程:
pskill \\192.168.199.2 cmd
...或者在远程机器上运行cmd.exe
并以方便的方式与其交互(就像我直接登录到远程机器一样):
psexec \\192.168.199.2 cmd
执行完最后一条命令后,窗口标题变为\\192.168.199.2: cmd
。在此窗口中,我可以运行远程计算机上的 psTools,无需再指定目标主机。非常方便!
执行exit
允许退出远程cmd.exe
进程并将窗口标题改回"cmd ( run as 192.168.199.2\admin )"
。
start
在开始时添加cmd.exe
在单独的窗口中启动远程进程:
start psexec \\192.168.199.2 cmd