我一直在阅读Hoglund的一些书籍,我以为我会在他的'简单调试器'上'去'...
无论如何,我一直在尝试使用
这一行hProcess = OpenProcess(PROCESS_ALL_ACCESS | PROCESS_VM_OPERATION, 0, aPID);
每次我在正在运行的进程中使用它时,hProcess都会返回NULL,为什么这个 - 我使用的目标是notepad.exe的实例。
我可以使用以下方法终止进程:
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, aPID );
我想知道如何提升权限,以及为什么它不起作用。
谢谢,R。
答案 0 :(得分:3)
MSDN中有一种可能性:
Windows Server 2003和Windows XP / 2000:大小 PROCESS_ALL_ACCESS标志增加了 Windows Server 2008和Windows Vista。 如果是为Windows编译的应用程序 Server 2008和Windows Vista正在运行 在Windows Server 2003或Windows上 XP / 2000,PROCESS_ALL_ACCESS标志 功能太大了 指定此标志失败 ERROR_ACCESS_DENIED。为了避免这种情况 问题,请指定最小集合 访问权限 操作。如果必须是PROCESS_ALL_ACCESS 使用,将_WIN32_WINNT设置为 目标最低操作系统 你的应用程序(例如,#define _WIN32_WINNT _WIN32_WINNT_WINXP)。有关更多信息,请参阅使用 Windows标题。
您定位的操作系统是什么,以及PROCESS_ALL_ACCESS使用了什么值?如果它是Vista之前的操作系统,并且您传递的值是0xFFFF,则可能是问题的原因。
答案 1 :(得分:1)
您使用的是Vista还是Windows 7?如果是这样,您需要在二进制文件中嵌入UAC manifest文件。在该清单中将requestedExecutionLevel
设置为requireAdministrator
。这应该使UAC提示输入管理员密码,然后尝试提升应用程序的权限。