草庐IT

OpenProcess

全部标签

windows - 关于进程访问权限的问题

我得到了以下场景:进程A创建进程B,然后B尝试使用OpenProcess()获取A的句柄。我希望B拥有A的PROCESS_ALL_ACCESS权限。我该如何实现?谢谢。 最佳答案 可能最简单的方法是让parent完全避免child必须调用OpenProcess。相反,让父对象检索自身的句柄(它将自动拥有所有访问权限),然后使用bInheritHandle=true调用DuplicateHandle。然后当它创建进程B时,该句柄(具有对进程A的完全访问权限)将已经在子进程中打开。进程A只需将句柄传递给进程B,进程B就可以使用它。

windows - 如何从 OpenProcess() 获取 PROCESS_INFORMATION?

在Windows中,我可以通过CreateProcess()获取PROCESS_INFORMATION。但是,是否可以通过OpenProcess()获取PROCESS_INFORMATION? 最佳答案 根据评论,您实际上对枚举进程中的线程感兴趣。您可以使用工具帮助库来做到这一点。调用CreateToolhelp32Snapshot创建进程的快照。然后用Thread32First和Thread32Next枚举线程。MSDN此处有示例代码:http://msdn.microsoft.com/en-us/library/windows/

c++ - 某些用户的 OpenProcess 访问被拒绝

我有一个应用程序打开另一个非系统32位进程,并尝试使用EnumProcessModulesEx获取其加载模块的列表,并使用GetModuleFileNameEx获取每个模块的路径.它在我的开发环境(Windows10)中运行良好,并且适用于许多测试过该应用程序的用户。但是,对于某些用户(两个用户,Windows8.1和Windows10),OpenProcess()函数失败并显示访问被拒绝(错误代码5)。我正在使用PROCESS_QUERY_INFORMATION|打开进程PROCESS_VM_READ。使用PROCESS_QUERY_LIMITED_INFORMATION打开进程可以

检查(作为普通用户)管理进程是否正在运行(C,Windows)

我正在尝试检查从服务启动的进程是否正在运行。问题是,我们将我们的应用程序从WindowsXP迁移到Windows7。此应用程序的一部分是服务,它会启动一些进程。另一部分是对话应用程序。此对话框应用程序尝试识别来自服务的进程是否正在运行。进程的pids存储在共享内存中,因此我可以使用WinApi中的OpenProcess()获取进程句柄,这适用于WindowsXP。如果我尝试在Windows7上执行此操作,该函数会报错-访问被拒绝。我想,我知道,为什么会这样(Windows7中新的0级隔离),但我需要找到一些解决方法。我的问题是是否可以对创建的进程设置访问权限以及如何设置(请给我一些示例

c++ - OpenProcess/ReadProcessMemory/WriteProcessMemory/CloseHandle 等效项

这些Windows函数的等效API是什么?如果您不熟悉Windows函数,它们所做的只是打开一个进程,访问(读取和写入)它的内存并关闭它的句柄。这也可以只用系统调用来完成吗? 最佳答案 您正在寻找ptrace.尽管名称如此,它也将针对Linux和可能的其他系统上的单个线程。如果该博文没有帮助,可以通过Google找到更多信息。 关于c++-OpenProcess/ReadProcessMemory/WriteProcessMemory/CloseHandle等效项,我们在StackOve

c++ - 如何从进程ID获取进程句柄?

我有进程ID,我想获取它的进程句柄。是否有任何可用的API。我尝试使用OpenProcess,但它返回NULL,并且GetLastError=0。这是我在Vista上尝试的。我想我需要在使用OpenProcess之前启用SeDebugPrivilege。但是为了启用SeDebugPrivilege,我需要获取它的进程句柄。 最佳答案 OpenProcess(PROCESS_ALL_ACCESS,TRUE,procId);您需要验证您使用的是有效的进程ID,并且您已获得从该进程请求的访问权限。

c++ - 如何从进程ID获取进程句柄?

我有进程ID,我想获取它的进程句柄。是否有任何可用的API。我尝试使用OpenProcess,但它返回NULL,并且GetLastError=0。这是我在Vista上尝试的。我想我需要在使用OpenProcess之前启用SeDebugPrivilege。但是为了启用SeDebugPrivilege,我需要获取它的进程句柄。 最佳答案 OpenProcess(PROCESS_ALL_ACCESS,TRUE,procId);您需要验证您使用的是有效的进程ID,并且您已获得从该进程请求的访问权限。

windows - OpenProcess:仅在 Windows 8.1 上出现拒绝访问错误

我有一个程序可以调整SeDebugPrivilege,然后开始遍历系统进程并为它们调用OpenProcess(并做其他事情,但现在不重要)。该程序当然也以管理员模式运行。在WindowsXP和Windows7上运行良好,但在Windows8.1上,以下系统进程的OpenProcess失败并显示ERROR_ACCESS_DENIED(5):smss.exe、csrss.exe、services.exe。正如我对SeDebugPrivilege的了解,我应该能够打开这些进程并为它们检索句柄。有没有人知道什么样的魔术只在Windows8.1上导致此错误?(无论如何,我对CreateToolh

windows - 如果 OpenProcess() 因 ACCESS_DENIED 而失败,如何从 pid 获取进程文件名?

我正在尝试从其pid中获取进程名称。用户以管理员身份运行,启用UAC,但未提升权限。一些系统进程,如services.exe,以这样的方式设置它们的安全性OpenProcess(PROCESS_QUERY_INFORMATION...失败并返回ERROR_ACCESS_DENIED。与PROCESS_QUERY_LIMITED_INFORMATION访问权限相同的结果。但是,我可以看到ProcessExplorer可以至少列出所有这些进程,以及它们的pid和文件名(运行时作为非提升的管理员)。我的问题是,鉴于非提升的管理员无法遵循OpenProcess()+GetProcessImag