问题标签 [sysinternals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - windows-kernel - 线程ID可以与进程ID相同吗?
嗨,我四处寻找这个问题的答案,我想知道是否有任何有 Windows 内部经验的人知道内核是否会分配与线程 ID 相同的进程 ID。我的意思是说我已经启动了一个进程 a.exe,它有一个 id 为 123 的线程。如果启动另一个进程,例如 b.exe,进程 id 会是 123 吗?换句话说,进程和线程标识符是否曾经发生冲突?谢谢
编辑:似乎进程和线程 id 来自名为 PspCidTable 的同一个池。一位名叫 Polynomial 的黑客审查了 windows nt 源代码,他说:
内核需要能够生成一系列在整个系统中唯一的进程和线程 ID。为了有效和安全地做到这一点,内核创建了一个可用于进程和线程的 ID 池。这个池在内核中被导出为一个名为 PspCidTable 的 HANDLE_TABLE 对象。在系统 Phase0 启动过程中,会调用 PspInitPhase0 函数。此函数使用 ExCreateHandleTable 创建一个 HANDLE_TABLE 对象,它会自动用 65536 个整体填充表。每个条目都是一个 16 位无符号整数(至少在 32 位操作系统上),存储在作为双向链表一部分的列表项对象中。进程 ID 和线程 ID 都来自 PspCidTable 池。
以上来源:你(可能)不了解 Windows 的东西
PspCidTable仍然存在于 Windows XP中,Windows 7 中的经验观察使我相信上述情况仍然正确。
debugging - 解决 Outlook 插件挂起的推荐方法是什么?
我有一个相当稳定且已使用多年的 Outlook 插件。在 citrix 机器环境中,如果打开,插件会导致 Outlook 挂起。日志没有多大帮助。如果我可以进行本机调试,我该如何解决这个问题?
windows - 打开默认桌面注册表项时发生 BGInfo 错误
运行非常好的 BGInfo 工具来唯一识别各种计算机。但是,在尝试在 Windows 2008 Server R2 上运行时,我收到以下错误:
“打开默认桌面注册表项时发生错误。请确保当前用户有权更改登录桌面设置:访问被拒绝。”
该程序是通过放置在“C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup”中的快捷方式启动的,该快捷方式是指定一个 .BGI 配置文件(而不是从注册表中读取设置)。关于为什么管理员以外的用户会发生错误的想法?
在更深入的层面上,我很好奇是否有人知道为什么 BGInfo 必须打开“默认桌面注册表项”以及它在“登录桌面设置”中更新的内容(引号中的短语取自原始错误消息)?
c# - 通过指定/模拟另一个帐户来调用 Process.GetProcesses?
通过使用Process.GetProcesses
,我们可以列出远程计算机中正在运行的进程,例如
但是,这似乎取决于我的帐户的许可。它抛出异常“无法连接到远程机器”。如果正在运行的用户无权访问远程计算机。我可以在检查进程时指定另一个由 .NET 使用的帐户,类似于PsList-u
中的和-p
开关吗?
java - 在 java 中使用 dbgview
我正在编写 java 代码并想使用 dbgview (如果可能的话,还有 log4j )。通过搜索 log4j 的文档,似乎与 log4net 不同,log4j 不支持OutputDebugStringAppender
将输出重定向到 dbgview 所听的内容。
如何创建一个 dbgview 可以解析的日志文件?如何从 java 将字符串发送到调试流?java是否有任何debugview替代方案?
我正在使用 eclipse、Windows 7 和最新的 log4j jar。
windows - 是否可以使用 AutoHotKey 运行 PSLoggedOn 并编辑流中的输出并返回结果?
我正在使用 AutoHotKey 构建一个使用 Sysinternals 工具 PSLoggedOn 的简单 GUI 工具。首先,如果我使用
run psloggedon.exe -l -x \\computername
我根本没有得到任何输出。
所以我尝试run %ComSpec% /C psloggedon.exe -l -x 1> %Temp%\psloggedon.txt
了,这给了我每个登录用户的域\用户名格式的输出。
就像我的第一个示例一样,我宁愿只运行 psloggedon 并获取输出,而不是首先打开命令提示符;这有可能吗?
无论哪种方式,我都想获取输出并避免将其写入文件,而是编辑输出流的输出以删除“域\”部分,然后只返回用户名。没有任何第三方软件如何做到这一点?
windows-8 - Windows 8 与 sysinternals 桌面实用程序不兼容
在谷歌搜索了大约一个半小时后,我一直无法找到任何关于开始菜单和 Windows 8 风格应用程序如何在幕后工作的确切信息。我的印象是 Windows 8 风格的应用程序是创建全屏窗口的进程,而 Windows 8 开始菜单是由 explorer.exe 以几乎相同的方式创建的。但是 Windows 8 与 1.x 版 Sysinternal 的桌面实用程序之间存在不兼容,我不得不想象正在发生更复杂的事情。
但是,在 Spy++ 中,每个 Windows 8 样式应用程序都显示为带有样式集的标准窗口WS_EX_TOPMOST
,假设它们没有什么特别之处,这是有道理的。关于开始菜单,它显示ImmersiveLauncher
为由explorer.exe
. 也许探索者已经厌恶拥有多个实例......
使用旧版本的 SysInternal 桌面,附加桌面中的资源管理器实例工作正常,但不加载固定项目,也不加载桌面背景和图标。
explorer.exe
当多个副本在不同的桌面上运行时,是否有任何文档说明为什么 Windows 8 的行为与过去版本不同?
(这纯粹是出于好奇)
(是的,我知道有一个支持 Windows 8 的Desktops 2.0版本,但它使用了一些有趣的解决方法,比如在按下 windows 键时切换到原始桌面。它似乎也会在桌面时触发 explorer.exe 中的一些初始化首次加载,而不是简单地启动进程。)
c++ - 如何捕获 OutputDebugString 消息
我有一个用Visual C++编写的应用程序,它使用 OutputDebugString() ( Win32 API) 来记录消息。输出是一个 DLL 文件。有没有可以捕获这些消息的方法或实用程序?
c# - procdump 没有为 StackOverflow 异常创建转储
我正在尝试为 .Net C# 应用程序创建故障转储。为此,我编写了一个代码,该代码将使应用程序因 Stack Overflow 异常而崩溃:
我正在使用的 procdump 命令:
该应用程序正在按预期崩溃,并且 procdump 也正在捕获它。我可以在 procdump 监控控制台打印中看到。但是没有创建转储。
猜猜我没有使用正确的 procdump 命令。有人可以帮忙吗?
c# - PsExec 打开我的远程机器进程,但应用程序没有启动
我正在使用此代码在远程机器中打开进程:
在远程机器上,我可以看到进程开始,但我看不到我的Application GUI
.
双击exe将打开GUI