怎样取得指定进程的全路径?
当前系统中存在两个同名的进程它们都是EXPLORER.EXE,其中有一个是系统的,而有一个可能是病毒,
我在程序中应该怎样编程让它能识别出来,那个是真,那个是假呢?我初步的想法是检查它们的路径,如果路径是X:\windows\EXPLORER.EXE,
那么它就是真的,其余都是假的现在我想分别得到这两个进程的路径,大虾,请帮助小弟一下吧!
当前系统中存在两个同名的进程它们都是EXPLORER.EXE,其中有一个是系统的,而有一个可能是病毒,
我在程序中应该怎样编程让它能识别出来,那个是真,那个是假呢?我初步的想法是检查它们的路径,如果路径是X:\windows\EXPLORER.EXE,
那么它就是真的,其余都是假的现在我想分别得到这两个进程的路径,大虾,请帮助小弟一下吧!
解决方案 »
- Access数据库,要经常插入数据,且要及时显示,用哪几个组件?
- 《Delphi5开发人员指南》
- 为什么Webbrowser右键无法复制
- 熟悉adobe acrobat 7.0 sdk 得进,得到pdf文件得索引,不胜感激!
- 清除Access数据表里的数据后,发现库文件的大小没有改变,怎么收回已分配了的数据库空间呢
- 请教实现鼠标单击选定效果的方法!!!感谢!!
- 关于数据排序的一个问题
- ado+delphi5+dbgrid+lookup字段
- 各位高手前来指点,三层结构配置问题,解决之后另开一贴送分!谢谢大家!
- 菜鸟张嘴(Table is busy ~~~~~~~)
- DLL 的问题哦,快来看看。
- 请问SQLConnection 控件怎么连接数据库的?
这样子不行的,它返回的不是进程的路径
function EnabledDebugPrivilege(const bEnabled: Boolean):Boolean;
var
hToken: THandle;
tp: TOKEN_PRIVILEGES;
a: DWORD;
const
SE_DEBUG_NAME = 'SeDebugPrivilege';
begin
Result:=False;
//打开当前Process的令牌
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken)) then
begin
//调整令牌的权限,加上权限(SE_DEBUG_NAME)
tp.PrivilegeCount :=1;
LookupPrivilegeValue(nil,SE_DEBUG_NAME ,tp.Privileges[0].Luid);
if bEnabled then
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
tp.Privileges[0].Attributes := 0;
a:=0;
AdjustTokenPrivileges(hToken,False,tp,SizeOf(tp),nil,a);
Result:= GetLastError = ERROR_SUCCESS;
CloseHandle(hToken);
end;
end;Function GetProcessFullPath(Name:String):String;
Var
Hd,Hs:THandle;
ParentStr:String;
pLps:PModuleEntry32;
Lps:TModuleEntry32;
Lp:TProcessEntry32;
Hds:THandle;
S,F:Cardinal;
begin
EnabledDebugPrivilege(true);
Try
Lp.dwSize:=sizeof(TProcessEntry32);
Hd:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if Process32First(Hd,Lp) then
Repeat
Try
ParentStr:=UpperCase(StrPas(Lp.szExeFile));
if ParentStr=UpperCase(Name) then
begin
Hs:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Lp.th32ProcessID);
Lps.dwSize:=SizeOf(TModuleEntry32);
if Module32First(Hs,Lps) then
begin
Result:=Lps.szExePath;
end
else
Result:='';
CloseHandle(Hs);
break;
end;
Except
end;
Until Process32Next(Hd,Lp)=False;
CloseHandle(Hd);
Finally
EnabledDebugPrivilege(false);
end;
end;