winapi – 来自Win32应用程序的x64图像上的OpenProcess
这很奇怪.早些时候,运行 Windows 7 x64,我无法针对64位进程调用Win32 OpenProcess.谷歌搜索了一下,并得出了沉没的结论,这不会发生. 然后发生了一件有趣的事.我尝试使用explorer.exe和神圣鲤鱼的进程ID,它有效!开始向它抛出其他进程ID,这只是一个愚蠢的废话. 事实证明,我可以针对大量的x64进程调用OpenProcess – explorer,itype,ipoint,taskhost,cmd,mstsc,…等. 其他人弹出5(访问被拒绝) – winlogon,csrss,services,svchost,mdm,… 我正在使用Process Explorer确认“bitness”和进程ID.另外,在64位进程上调用GetModuleFileNameEx总是失败,因此可以对32/64进行双重检查. 这是代码: ' Get a handle to the process. hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ,ProcessID) If hProcess Then ' Grab the filename for base module. nChars = GetModuleFileNameEx(hProcess,Buffer,Len(Buffer)) ' If running in x64,http://winprogger.com/?p=26 If Err.LastDllError = ERROR_PARTIAL_COPY Then nChars = GetProcessImageFileName(hProcess,Len(Buffer)) End If ' Truncate and return buffer. If nChars Then GetProcessFileName = Left$(Buffer,nChars) End If Call CloseHandle(hProcess) Else Debug.Print "LastDllError:"; Err.LastDllError End If 没有什么花哨.只想查询文件名或进程时间等过程.任何人都知道我可以打开的和我不能打开的区别是什么? 额外信息:以管理员身份运行流程. UAC关闭了.是的,它是一个32位的应用程序.使用PROCESS_QUERY_LIMITED_INFORMATION我没有更好的结果. 谢谢……卡尔 您引用的流程(winlogon,csrss等)是关键的系统流程和服务.它们在不同的特权帐户下运行.即使您以管理员身份运行,您也不是这些流程的所有者,因此您的ACL不会获得任何权利.尝试打开将导致访问被拒绝.但是,管理员组的成员确实有SeDebugPrivilege.这基本上是OpenProcess和OpenThread的覆盖,允许您打开所有访问权限,即使您未在ACL中授予任何权限. SeDebugPrivilege显然是一个非常危险的特权 – 您可以绕过访问检查并修改/检查其他用户的进程.虽然默认情况下它存在于管理员令牌中,但默认情况下不会启用它.您需要在调用OpenProcess之前启用此权限. 此MSDN article提供了有关如何启用和禁用令牌权限的示例代码. (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用Windows Power Management API调暗监视器
- Windows – Win7 Virtualbox在尝试启动虚拟机时出现此错误:
- wpf – xaml Scrollviewer – 禁用整个窗口的过度滚动/橡皮
- .net – 可以按需下载先决条件的好安装程序
- 根据Microsoft的说明,不会显示发布Web向导
- windows-8 – 在MetroStyle应用程序中使用COM对象
- Windows Server 2016-Win Ser 2016已删减内容
- row_number()在hql中的分区
- xaml – 如何将我的视图模型中的富文本(FlowDocument?)绑定
- wcf – 有关替换Microsoft .NET的Web服务增强功能(WSE)3.0的
- Microsoft Windows远程桌面协议中间人攻击漏洞(C
- api-ms-win-crt-runtime-|1-1-0.dll丢失的解决方
- 身份验证错误 要求的函数不受支持 Windows远程桌
- Windows – 无法从GitBash运行TASKKILL
- windows-ce – 确定Windows CE可执行文件使用的1
- 批处理文件 – Windows批处理将记录添加到主机文
- windows – 如何通过apt-cyg安装cygwin / X
- 如何在Windows 8.1上安装PyBluez?
- 在[Windows Subsystem for Linux]中安装perl模块
- Windows – Win32:如何将字符串转换为日期?