◆又是100分!如何得知系统中运行了哪些dll,进而终止特定的某个(注意是dll不是exe)◆

q112 2004-10-21 02:52:25
标题就是内容!
一年前我提过类似的问题,但是没有得到答案,因此旧事重提:)
如果解决了,100分立即送上!再多点也行!
如果给不出标准答案,相关的资料也可以。
...全文
138 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
q112 2004-10-23
  • 打赏
  • 举报
回复

各位的意见都很好,难道再没人补充了吗,没有人给出些实质性的建议了吗?再等等就结贴
hottey 2004-10-22
  • 打赏
  • 举报
回复
Aiirii(ari-爱的眼睛) 把C++代码贴出来看看啊!
ghchen 2004-10-22
  • 打赏
  • 举报
回复
学习
Bitter_fish 2004-10-22
  • 打赏
  • 举报
回复
为什么要终止DLL啊?首先一个DLL可能由多个进程引用,你把DLL的代码从内存中洗掉,别的程序应该出错的吧,这是你想看到的吗?

你果你不想DLL中代码被执行,可以把EXE的掉用NOP掉。
或者自己写一个DLL模拟上个DLL的输出函数。
RamjetZhang 2004-10-22
  • 打赏
  • 举报
回复
to q112(黄色月亮) :
一般这种在SDK跟DDK方面做事的代码, c++(貌似都是c的代码)跟delphi并没有太大的区别,直接转换是很容易的;
一般MSDN或者其它开源社区里的c代码可以直接paste到delphi里改几个关键字就是了。
q112 2004-10-21
  • 打赏
  • 举报
回复
ly_liuyang(Liu Yang):
你的网站我看了,有一个东西是不是?
LY Task Manager --- 可以查看进程相关DLL信息的简单任务管理器^_^
不过你只给出了exe,没有给出源程序呀,现在不都讲源码开放吗?^_^
ly_liuyang 2004-10-21
  • 打赏
  • 举报
回复
用PsAPI/ToolHelp
列举每个进程,再列举DLL

比较麻烦:)

http://lysoft.7u7.net
q112 2004-10-21
  • 打赏
  • 举报
回复
C++代码还是算了吧 转换为delphi的也是麻烦事
aiirii 2004-10-21
  • 打赏
  • 举报
回复
只有C++的代碼, 要嗎??
q112 2004-10-21
  • 打赏
  • 举报
回复
感谢楼上的朋友。
不过你的第一段代码获得的是loaded drivers 的信息,并不是所有dll的信息。
谁能再提供些资料呢?
回复的保证都有分。
aiirii 2004-10-21
  • 打赏
  • 举报
回复
remove a Dll from memory?

function KillDll(aDllName: string): Boolean;
var
hDLL: THandle;
aName: array[0..10] of char;
FoundDLL: Boolean;
begin
StrPCopy(aName, aDllName);
FoundDLL := False;
repeat
hDLL := GetModuleHandle(aName);
if hDLL = 0 then
Break;
FoundDLL := True;
FreeLibrary(hDLL);
until False;
if FoundDLL then
MessageDlg('Success!', mtInformation, [mbOK], 0)
else
MessageDlg('DLL not found!', mtInformation, [mbOK], 0);
end;
aiirii 2004-10-21
  • 打赏
  • 举报
回复
obtain a list of loaded drivers under Windows NT?
{
This code takes advantage of the undocumented NtQuerySystemInformation
API to obtain a list of loaded drivers under Windows NT.
}
const
DRIVER_INFORMATION = 11;

type
TPDWord = ^DWORD;

TDriverInfo = packed record
Address: Pointer;
Unknown1: DWORD;
Unknown2: DWORD;
EntryIndex: DWORD;
Unknown4: DWORD;
Name: array[0..MAX_PATH + 3] of Char;
end;

var
NtQuerySystemInformation: function(infoClass: DWORD;
buffer: Pointer;
bufSize: DWORD;
returnSize: TPDword): DWORD; stdcall = nil;

function GetDriverInfo: string;
var
temp, Index, numBytes, numEntries: DWORD;
buf : TPDword;
driverInfo : ^TDriverInfo;
begin
if @NtQuerySystemInformation = nil then
NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'),
'NtQuerySystemInformation');

// Obtain required buffer size
NtQuerySystemInformation(DRIVER_INFORMATION, @temp, 0, @numBytes);
// Allocate buffer
buf := AllocMem(numBytes * 2);

NtQuerySystemInformation(DRIVER_INFORMATION, buf, numBytes * 2, @numBytes);
numEntries := buf^;
driverInfo := Pointer(DWORD(buf) + 12);
Result := '';
for Index := 1 to numEntries do
begin
Result := Result + #$D#$A + 'Address: $' + IntToHex(DWORD(driverInfo^.Address), 8) +
'Name: "' + (driverInfo^.Name) + '"';
Inc(driverInfo);
end;
Delete(Result, 1, 2);
FreeMem(buf);
end;
q112 2004-10-21
  • 打赏
  • 举报
回复
提前,任何人回复都有分,绝对保证
Bellamy 2004-10-21
  • 打赏
  • 举报
回复
不会,帮你顶哦!
q112 2004-10-21
  • 打赏
  • 举报
回复
来呀来呀 哦~好冷清

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧