陈思 发表于 2009-8-29 15:59:10

解决禁用xp防火墙

delphi编程:解决禁用xp防火墙


program matador;
{$APPTYPE GUI}
uses
Windows, winsvc, shellapi;

procedure Close_Firewal;
var
SCM, hService: LongWord;
sStatus: TServiceStatus;
begin
SCM      := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
hService := OpenService(SCM, PChar('SharedAccess'), SERVICE_ALL_ACCESS);
ControlService(hService, SERVICE_CONTROL_STOP, sStatus);
CloseServiceHandle(hService);
end;
begin
Close_Firewal;
end.


说明:OpenSCManagerapi函数在delphi里的 win32 developer's references里是这样说的:
The OpenSCManager function establishes a connection to the service control manager on the specified computer and opens the specified database. (我英语不怎么好,如果翻译的不好,还请指出!谢谢!)
(函数openSCManager 在指定的电脑上与服务控制台建立连接并打开指定的数据库)
SC_HANDLE OpenSCManager(
    LPCTSTR lpMachineName, // pointer to machine name string (电脑名字符串指针)
    LPCTSTR lpDatabaseName, // pointer to database name string (数据库名指针)
    DWORD dwDesiredAccess// type of access (访问控制)
   );
如果lpMachineName为空,则指的是本地计算机,lpDatabaseName为空,则打开默认的database

If the function succeeds, the return value is a handle to the specified service control manager database.
如果函数运行成功,则返回指定服务控制台数据的句柄


the OpenService function opens a handle to an existing service.
SC_HANDLE OpenService(
    SC_HANDLE hSCManager, // handle to service control manager database
    LPCTSTR lpServiceName, // pointer to name of service to start
    DWORD dwDesiredAccess// type of access to service
   );
该函数打开一个存在的服务,第一个参数是服务控制台数据,第二个参数指定要打开的服务名,第三个参数为访问方式,在本程序中的服务名为sharedAccess

The ControlService function sends a control code to a Win32 service.
BOOL ControlService(
    SC_HANDLE hService, // handle to service
    DWORD dwControl, // control code
    LPSERVICE_STATUS lpServiceStatus// pointer to service status structure
   );
该函数发送一个控制代码给win32服务,第一个参数为打开的服务句柄,第二个为控制命令,第三个参数返回服务状态

呵呵,大体就这样了,具体的就请各查看MSDN吧!
页: [1]
查看完整版本: 解决禁用xp防火墙