问题标签 [openprocess]

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.

0 投票
2 回答
1480 浏览

delphi - OpenProcessToken() 给出“访问被拒绝”

作为作为服务运行的项目的一部分,该服务在登录屏幕(用于桌面控制)中生成一个进程,我们调用 OpenProcessToken(),然后将其复制并创建一个进程。这在 LocalSystem 下可以按预期成功运行,但是这在域帐户下不起作用。代码片段如下...

可以在此处找到周边支持功能的完整来源。

这是它变得有点模糊的地方。我知道 OpenProcessToken() 需要特权,这最终是我收到错误的原因,但是不清楚我需要什么特权,以及如何有效地将其分配给域帐户。

表明所需的特权是 SeTcbPrivilege(“作为操作系统的一部分”)。

我已阅读有关权限的 Microsoft 页面(无法链接,没有足够的声誉 - 抱歉),这表明可以使用本地或组安全策略将 SeTcbPrivilege 分配给域帐户。也有人建议目标进程(即 winlogon.exe)可能根本不允许LocalSystem 以外的任何东西获取其令牌。

我曾尝试使用帐户服务显式配置域帐户,但在本地安全和组策略中,已重新启动并执行gporesult以确保策略已生效,但每次whoami /priv返回 SeTcbPrivilege 已禁用

我的问题是这是否可能(我可以使用域帐户获取 winlogon.exe 令牌),如果可以,可以通过编程方式设置权限,还是需要通过 GPO?(如果是这样,鉴于我之前使用 GPO 的尝试没有效果,这怎么可能)

0 投票
0 回答
1322 浏览

c++ - 为什么我需要获得调试权限才能在以管理员身份运行时以最小权限使用 OpenProcess?

我的一个程序试图调用OpenProcess我的另一个程序,这是一项服务。第一个程序以本地管理员帐户或管理员组的另一个成员身份运行,并且该服务以 SYSTEM 用户身份运行。

我发现至少在一种环境(但不是全部)中,调用OpenProcess失败并显示ERROR_ACCESS_DENIED. 此外,我发现如果我使用AdjustTokenPrivileges获取SE_DEBUG_NAME权限,则OpenProcess成功。我已经使用下面的程序重现了该行为。它失败的环境是运行 Windows 8.1,但我不知道成功的系统正在运行什么。

程序请求的唯一权限是PROCESS_QUERY_LIMITED_INFORMATION(因为它最终会调用QueryFullProcessImageName)。我读过的任何内容都没有表明需要调试权限,仅用于更“侵入性”的访问,例如PROCESS_VM_READor PROCESS_ALL_ACCESS,我不感兴趣。

我已经阅读了有关受保护进程的信息,即使我所针对的服务没有被指定为受保护进程,但文档说这PROCESS_QUERY_LIMITED_INFORMATION不在被禁止授予受保护进程的权限之列。

为什么最初的调用会OpenProcess失败,为什么调试权限会有所不同?

0 投票
1 回答
58 浏览

c++ - 在 isProcessRunning(handle)=true 处需要左值作为赋值的左操作数

我不明白我的代码有什么问题,对不起,如果这是一个愚蠢的问题,我是初学者

(第 15 行第 34 行)[错误] 左值需要作为赋值的左操作数

0 投票
1 回答
1114 浏览

c++ - 从不允许的应用程序中读取内存

我目前正在尝试读取阻止调用OpenProcess和的游戏的全部内存ReadProcessMemory(我相信这是通过 Windows 驱动程序/服务完成的,尽管我不确定如何)。

我使用以下代码尝试打开进程并将其内存读取到文件中:

但是,在运行时,这甚至无法打开该进程。

绕过阻止进程打开以进行内存读取的驱动程序的唯一方法是将整个物理内存转储到文件中。我不知道该怎么做,除了必须设置窗口以在蓝屏上转储所有物理内存,然后强制我的计算机以蓝屏关闭。这显然很不方便,因为我想经常分析应用程序的内存。

有没有办法在 Windows 上不使用这种方法来转储所有物理内存?我对驱动程序或它的工作原理几乎一无所知,因此几乎不可能找到另一种绕过它的方法。

0 投票
1 回答
477 浏览

winapi - OpenProcess call returns pseudo handle

MSDN says that OpenProcess() must return either a valid handle, or NULL on error.

However, I met a rare situation on Win7 x64 (and also on Win 8.1 x86, Win XP x64, Win Vista x64) where OpenProcess() returned -1 for the current process, i.e. the pseudo handle, while I enumerated processes. It occurs very rarely from time to time (when I run my test suite on different platforms). And I can't reproduce it on Win 10.

Then CloseHandle() fails on this handle with ERROR_INVALID_HANDLE error. But on the other hand MSDN says that

The pseudo handle need not be closed when it is no longer needed. Calling the CloseHandle function with a pseudo handle has no effect.

Why does this happen? Is it correct behavior for OpenProcess()?

Below is an example of my code:

UPD: I found why my tests never fail on Win 10 platform - CloseHandle(HANDLE(-1)) always returns TRUE on Win 10, while on Win 7 it returns FALSE with 0x6 error. But I still have no explanation about OpenProcess() behaviour.

SOLUTION: As Ben Voigt said (see the accepted answer) there was a hook in the test environment, which was not cleared after the previous test suite run. After days of debugging the hook was found and localized, the test suite was fixed to clean the hooks up. Now OpenProcess call works correctly.

0 投票
1 回答
191 浏览

c - 使用单个 HANDLE 和两次调用 ReadProcessMemory 时句柄无效

我刚刚开始学习 Windows API,我想制作一个简单的程序来读取给定进程中的值。

这是我的代码

但是,如果我为 RPM 的第二次调用创建一个新的句柄,它就可以完美地工作。

我在 MSDN 上读到:

OpenProcess 函数返回的句柄可用于任何需要进程句柄的函数”

我究竟做错了什么 ?

0 投票
1 回答
682 浏览

c# - C# 使用参数打开 rasphone.exe

你能找到我的问题吗?我无法使用正确的参数打开 rasphone.exe。

我也试过:

或者:

在 .bat 文件中:

它打开 cmd/.bat 但我没有使用正确的参数打开 rasphone.exe。

0 投票
2 回答
757 浏览

qt - 使用 Qt 在 Windows 上的 C++ 中打开一个进程并捕获其区域的屏幕

如何在 Windows 上打开一个进程并将其区域的屏幕捕获到 c++ 中的图像文件中?我正在使用 Qt,但似乎 Qt 没有用于此的 API。所以我想知道是否有任何 API 或库可以做到这一点。谢谢你

0 投票
0 回答
72 浏览

c - 返回 0,错误代码 6,C++ 中的 OpenProcess()

查找所有当前正在运行的进程的路径。

我正在使用 mfc,并且我还实现了提升源。

一些路径是已知的,但 100 个进程中约有 50 个从OpenProcessHandle. 错误代码为 6。

0 投票
2 回答
54 浏览

java - 在处理和理解代码中创建可视化

我正在尝试进行创意编码,主要是为了创建实时视觉效果。我最近偶然发现了一个名为https://www.openprocessing.org/的很棒的网站,人们可以在这里分享他们的创作。

我在下面附加了用于创建两个移动圆圈的代码,但我无法理解创建者是如何这样做的,如果有人可以向我解释 for 循环是如何工作的以及该x += 0.006; y += 0.006; if (x > TWO_PI) {x = 0;}部分是如何工作的,将不胜感激。sin,cos和 Two_PI 函数的使用让我感到困惑。这是原始代码的链接:

https://www.openprocessing.org/sketch/467333