该程序拥有另一个进程的ProcessId,并且需要获得该进程的句柄(以便能够稍后终止该进程,还可以使用WaitForSingleObject定期检查该进程是否处于活动状态并进行响应)。当我编译我的程序(在Embarcadero RAD Studio2010 C++ Builder中)时,它工作得很好;程序似乎成功地获得了句柄,并且通常可以按预期工作。
我在Delphi中使用VirtualAllocEx在一个外部进程中保留内存,如下所示: p : pointer; p := VirtualAllocEx(Process, nil我的程序将一个简单的整数值写入分配的地址,如下所示:由于该地址存储在p中,因此我可以保存该地址,以便将其用于其他应用程序。另一个应用程序必
在Windows Server 2003上,这可以很好地工作。我们可以在Process Explorer -属性-安全选项卡-无法打开的服务进程的权限中看到的内容-在Server2003中,每个人都有“完全控制”权限。如果我们在Server2008 R2+上的客户端启用了SeDebugPrivilege,那么即使服务是以系统身份运行的,OpenProcess也会成功。不幸的是,客户端的代码不再可用,
安装SQL Server 2008时,如果未为执行安装的用户启用此权限,安装将不正常地失败。因此,在我的应用程序中,在安装SQL Server之前(使用静默安装),我想要检测当前运行的用户是否具有“调试程序”权限集(即,SeDebugPrivilege、SE_DEBUG_NAME...)我不想知道当前进程是否设置了该权限(因为,显然,大多数情况下没有设置,即使系统上启用了该权限)。我最初认为"PrivilegeCheck“应
当用户打开任何新的进程时,我试图将进程创建挂钩,并在我的钩子过程中接收一个“通知”。为了只挂一个函数,我尝试在CsrCreateProcess at csrss.exe中完成这个任务。但是每次我在这个进程中注入一个DLL时,我都会得到一个BSOD (蓝色屏幕)。在csrss中尝试挂这个函数是个坏主意吗?我开始考虑在explorer.exe内部注入和钩子NtCreateSection,这应该可以解决我的问题,对吗?其他快速问题:是否可以