这种结构从何而来?我知道它是在著名的 ntdll.h 中声明的,并且是未记录的 Windows API 的一部分。但是在不同版本的windows之间不是有所不同吗?有没有办法从工作系统中转储这个结构?我在 Windbg 中尝试了“dt SYSTEM_HANLDE_INFORMATION”,在 SoftIce 中尝试了“键入 SYSTEM_HANLDE_INFORMATION”,但我得到的只是“没有这样的符号”消息。我还用 PdbDump.exe 转储了 ntoskrnl.pdb 并在转储的结构中搜索 - 并且找不到 SYSTEM_HANLDE_INFORMATION 和 SYSTEM_HANLDE。
你可以帮帮我吗?
我正在使用来自SysInternals的VMMap查看我的Win32 C++进程在WinXP上分配的内存,我看到一堆分配,其中已分配内存的一部分被保留但未提交.据我所知,从我的阅读和测试来看,C++程序中使用的所有常见内存分配器(例如,malloc,new,LocalAlloc,GlobalAlloc)总是分配完全提交的内存块.堆是保留内存但在需要之前不提交内存的代码的常见示例.我怀疑其中一些块是Windows/CRT堆,但似乎有更多这些类型的块比我预期的堆更多.我看到我的进程中有30个这样的块,大小在64k到8MB之间,我知道我的代码从不故意调用VirtualAlloc来分配保留的,未提交的内存.
以下是VMMap的几个示例:http://www.flickr.com/photos/95123032@N00/5280550393/
还有什么会分配这样的内存块,其中大部分是保留但未提交?我的流程有30堆是否有意义?谢谢.
我正在尝试删除标志"使用DLL启用堆标记"时出现错误,调试工具GFlags用于所谓的"图像":我正在调试的应用程序.
我得到" 无法保存注册表错误5 ".但是对于其他"启用堆..."标志没有问题,它们可以打开和关闭.我尝试以管理员身份启动该实用程序,但这不会改变任何内容.
所以我试图弄清楚应该手动更改哪些注册表设置以使事情恢复正常,但是我似乎没有找到关于Windows全局标志的正确注册表项.
或者我可以删除与我的应用程序相关的任何全局标志.
任何的想法 ?
我试图找到FLG_HEAP_PAGE_ALLOCS在注册表中,这是更普遍的标志的符号名称"启用页堆"为说,这里在MSDN.但没有成功.
有谁知道,如何禁用"版权标题"在运行PSExec时出现?Everutime我运行"./psexec ..."命令我看到这条消息:
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
Run Code Online (Sandbox Code Playgroud)
它真的很烦人,它使我的脚本输出膨胀.
谢谢
马修
我正在尝试快速而肮脏地部署项目.我认为运行我的过程很容易,使用一些工具来获取所有加载文件(DLL)的列表,并使用该列表为我的测试部署创建一个复制文件列表.
考虑使用filemon,但那里有很多噪音.它是一个.net项目.
谢谢.
psexec 是否适用于 Windows 10 远程主机?我正在从 Windows 7 机器运行 psexec。当远程主机是Windows 8.1时,它可以工作,当远程主机是Windows 10时,它会失败,如下所示:
C:\Windows 7>psexec -h -u Admin -p passwordHere -n 280 \xxx.xx.xxx.xxx ipconfig
PsExec v2.11 - 远程执行进程 版权所有 (C) 2001-2014 Mark Russinovich Sysinternals - www.sysinternals.com
无法在 xxx.xxx.xxx.xxx 上启动 PSEXESVC 服务:远程过程调用失败且未执行。
任何线索表示赞赏。
使用 Windows 命令提示符并执行 cmd.exe 内置命令(例如 copy、del、echo、start 等)时,执行的相应命令行字符串不会填充到 Sysmon 事件 ID 1 - 进程创建中。Sysmon 事件仅概述 cmd.exe 映像,命令行值只是 cmd,而不是copy foo bar.
我的理论是,当打开 cmd 提示符时,仅执行 cmd.exe 进程,并进一步触发 Sysmon 事件 ID 1 - 进程创建的事件,但是,因为我执行的以下命令是 cmd.exe 内置命令(就像上面提到的那样),没有创建实际的新进程,这意味着没有创建新的 Sysmon 事件 ID 1,因此不会捕获命令行值。
如果我在同一命令提示符下运行其他 Windows 程序(例如 regedit.exe),我将触发一个新的 Sysmon 事件 ID 1 - 进程创建事件,其中包含执行的命令行字符串,例如regedit foo bar
为了进一步测试这个理论,我启用了 Windows 安全事件日志 - 4688(相当于 Sysmon 事件 ID 1 - 进程创建)来确定我的 Sysmon 配置是否是罪魁祸首。
查看端点上的 Windows 安全事件日志 - 4688 条目,再次测试我的问题后,我发现了相同的行为,Windows 事件日志中的命令行字符串值也是空白。仅显示来自 cmd.exe 生成进程的条目,但不会记录后续执行的内置 cmd 命令。但是,如前所述,如果我执行不同的 Windows 程序(如上面提到的 regedit),该活动将被捕获为新的 4688 事件,并执行相应的命令字符串。 …
我正在使用此代码在远程机器中打开进程:
Process process = new Process();
ProcessStartInfo psi = new ProcessStartInfo(@"D:\tools\PsExec\PsExec.exe");
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.WindowStyle = ProcessWindowStyle.Minimized;
psi.CreateNoWindow = true;
psi.Arguments = "\\\\192.168.0.100 -u user-p pass D:\\app.exe";
process.StartInfo = psi;
process.Start();
Run Code Online (Sandbox Code Playgroud)
在远程机器上,我可以看到该过程开始,但我看不到我的Application GUI.
双击exe将打开GUI

我试图通过PSExec在远程PC上运行一个批处理文件(在我刚刚写的'notepad'的批处理文件中).下面的psexec命令在我的笔记本电脑中运行,但无法在远程PC上执行任何操作.我甚至没有看到"记事本"在远程机器的进程列表上运行.
c:\Program Files (x86)\PSTools>psexec -u administrator -p force \\135.20.230.160 -s -d cmd.exe /c -c "C:\Amtra\bogus.bat"
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
cmd.exe started on 135.24.237.167 with process ID 1520.
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我,我在这里出错了吗?
谢谢,
我的意思是说:
如果我...
跑步runas /netonly /user:computername\username cmd
输入本地管理员帐户“用户名”的密码
然后输入psexec \\computername cmd
我现在有了一个工作 shell,可以在远程计算机上以本地管理员用户身份运行命令。
但是,尝试在没有runas... 的情况下运行此程序,而是使用用户名和密码参数来psexec返回访问被拒绝错误。
下面的例子:
psexec \\computername -u username -p password cmd
Access Denied
注:其他人似乎也有这个问题。我的精致问题:
-u和-p?我还尝试禁用我的计算机和目标计算机上的防火墙,并添加此处列出的注册表项。
sysinternals ×10
psexec ×4
windows ×3
cmd ×2
.net ×1
c# ×1
deployment ×1
gflags ×1
logging ×1
monitoring ×1
powershell ×1
registry ×1
shell ×1
windows-10 ×1