怎么编程,叛断用户有没开XP自带的防火墙,如果有怎么用程序把它关掉?(100分)

  • 主题发起人 主题发起人 koy0755
  • 开始时间 开始时间
K

koy0755

Unregistered / Unconfirmed
GUEST, unregistred user!
编了个聊天的程序,如果用户是XP的话就连不上,原来它有个自带的防火墙.

怎么用程序判断用户有没开这个防火墙,有的话怎么把它关了.
 
这要是能办到的话,盖茨怕又该哭了吧?? :)
 
一个思路:
  给你的聊天程序做个安装程序,安装的时候修改注册表,取消防火墙,提示重新启动机器。
  还有呢,把聊天程序放在自动启动里面,开机器自动启动。
  最后,聊天程序启动和退出都修改注册表,取消防火墙。
 
晕。我现在已经发现了XP什么原因了。启运了防火墙的话其实就等于是运行了。
C:/WINDOWS/System32/alg.exe
这个文件。这时我按下ctrl+alt+del键,发现会多了一个进程
进程的资料如下:
映像名称:alg.exe
....
...
其实只要关闭这个进程就可以了。

可是这个程没有窗口标题,本人技术不行,只会用findwindow 或enumwindows这些函数来找窗口句柄,不知哪位帮个忙,给个代码让我把这个进程关了。

我现在的思路是运行我的程时关了它。关闭我的程序时就打开它。这样才不会映响人家的正常使用啊。
 
用Process32First 和 Process32Next 列举系统进程,
当查到该进程后,
将其关闭即可啦,
呵呵~~~~~~~~~~~~~
 
为什么要把用户的防火墙关掉呢?
要是我把你家的大门的锁卸掉,你做何感想?
 
to xygz
不关掉怎么弄?我运行时把它暂了,然后退出时把它启动。这样已经算好了。

to netsoft:
如果用Process32First 和 Process32Next 列举系统进程,
怎么判断是不是我要的找的进程?能不能详细点。
 
我试了一下,用下面的代码能把进程死举出来,也能判断出该进程,但是为什么
不能把这个进程关掉呢?
procedure TForm1.Button1Click(Sender: TObject);
var SnapShot: THandle;
a: TProcessEntry32;
st:Tstringlist;
begin
st:=Tstringlist.create;
SnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
a.dwSize:=Sizeof(TProcessEntry32);
Process32First(SnapShot,a);
repeat
st.Add(IntToHex(a.th32ProcessID,8)+'='+a.szExeFile);
if lowercase(a.szExeFile)='alg.exe' then
begin//能判断出来,但是关不掉,是不是terminateprocess的参数不对啊?
if TerminateProcess(a.th32ProcessID,0) then showmessage('删除成功')
else showmessage('删不了');
end;
until not Process32Next(SnapShot,a);
CloseHandle(SnapShot);
memo1.Lines:=st; TerminateProcess(cardinal
end;
 
下面的代码通过!
uses ...,TLHelp32,...
procedure TForm1.Button1Click(Sender: TObject);
var
cLoop:boolean;
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
cLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
while integer(cLoop)<>0 do
begin
if FProcessEntry32.szExeFile='alg.exe' then
TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,FProcessEntry32.th32ProcessID),$FFFFFFFF);
cLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
closehandle(FSnapshothandle);
end;
 
上面的程序只能关一般的进程,
但alg.EXE 的用户我是LOCAL SERVICE不知是不是因为这个原因,所以用上面的方法关不掉。
 
winexec('net stop alg' , 0 ) 关掉它
 
晕啊!原来就一条dos命令就可以了,谢谢ztaif帮我解决了问题。但是ymqpc也给了我很大的帮助。散分了。
 
ztaif大哥,你还在吗?我用你的方法。是把alg.exe关了。
可是为什么进入“计算机管理”-服务,看到该项的状态还是打开的啊?
所以还是不能连接。哎~~``你知道是怎么回事吗?
 
后退
顶部