大佬教程收集整理的这篇文章主要介绍了枚举Delphi中的运行进程,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑:所提出的解决方案都没有给我拥有该进程的用户,只有PID,ExeName等信息……
以下是如何获取进程用户名的快速示例:
type PTokenUser = ^TTokenUser; TTokenUser = packed record User: SID_AND_ATTRIBUTES; end; function GetProcessUserName(ProcessID: Cardinal; out DomainName,UserName: string): Boolean; var ProcessHandle,ProcessToken: THandle; InfoSize,UserNameSize,DomainNameSize: Cardinal; User: PTokenUser; Use: SID_NAME_USE; _DomainName,_UserName: array[0..255] of Char; begin Result := False; DomainName := ''; UserName := ''; ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,ProcessID); if ProcessHandle = 0 then Exit; try if not OpenProcessToken(ProcessHandle,TOKEN_QUERY,ProcessToken) then Exit; try GetTokenInformation(ProcessToken,TokenUser,nil,InfoSize); User := AllocMem(InfoSize * 2); try if GetTokenInformation(ProcessToken,User,InfoSize * 2,InfoSize) then begin DomainNameSize := SizeOf(_DomainName); UserNameSize := SizeOf(_UserName); Result := LookupAccountSid(nil,User^.User.Sid,_UserName,_DomainName,DomainNameSize,Use); if Result then begin SetString(DomainName,StrLen(_DomainName)); SetString(UserName,StrLen(_UserName)); end; end; finally FreeMem(User); end; finally CloseHandle(ProcessToken); end; finally CloseHandle(ProcessHandle); end; end;
以上是大佬教程为你收集整理的枚举Delphi中的运行进程全部内容,希望文章能够帮你解决枚举Delphi中的运行进程所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。