gpt4 book ai didi

delphi - Process32Next不同的结果

转载 作者:行者123 更新时间:2023-12-02 22:44:59 27 4
gpt4 key购买 nike

我正在编写一个代码来扫描另一个进程内存。但这不是这里的问题。为了列出正在运行的进程,我使用 Process32First/Process32Next。但是当我在编译器调试中运行它时,它会获取所有进程(包括其他用户,例如系统进程)但是当我刚刚运行 .exe 时,只能从我的用户那里获取进程。代码的延伸如下

 Handle:= CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
Struct.dwSize:=Sizeof(TProcessEntry32);
Process32First(Handle, Struct);
repeat
Memo2.Lines.Append(Struct.szExeFile);
MemStart:= 0;
PID:= Struct.th32ProcessID;
PIDHandle:= OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_OPERATION or
PROCESS_VM_READ, false, PID);
if OS64 = true then
begin
if IsProcWow64 then
begin
Proc32:= true;
end
else
Proc32:= false;
end;
if (Proc32 = true) and (POS(Struct.szExeFile, Application.ExeName) = 0) then
begin
Memo1.Lines.Append('Process:: '+Struct.szExeFile+' - Scanning');
CatchYa(Struct.szExeFile);
end;
CloseHandle(PIDHandle);
until (not Process32Next(Handle,Struct));

如您所见,我正在检查 64 位进程,因为我只想要 32 位进程。

最佳答案

您正在使用管理权限运行 IDE,并且当您从调试器启动时,您的程序将继承这些权限。

除非您的程序需要管理权限,否则您也不需要运行提升的 IDE。它应该能够以普通用户身份运行,然后您的程序将获得与您单独运行它时相同的列表。

关于delphi - Process32Next不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com