Launching PurePow

This commit is contained in:
Davi-Koder 2025-05-07 18:21:06 -04:00
parent ea9e62ca3d
commit 9b24b8c229
8 changed files with 3961 additions and 0 deletions

File diff suppressed because it is too large Load diff

126
build/Source/NSIS.pas Normal file
View file

@ -0,0 +1,126 @@
{
Original Code from
(C) 2001 - Peter Windridge
Code in seperate unit and some changes
2003 by Bernhard Mayer
Fixed and formatted by Brett Dever
http://editor.nfscheats.com/
simply include this unit in your plugin project and export
functions as needed
}
unit nsis;
interface
uses
windows;
type
VarConstants = (
INST_0, // $0
INST_1, // $1
INST_2, // $2
INST_3, // $3
INST_4, // $4
INST_5, // $5
INST_6, // $6
INST_7, // $7
INST_8, // $8
INST_9, // $9
INST_R0, // $R0
INST_R1, // $R1
INST_R2, // $R2
INST_R3, // $R3
INST_R4, // $R4
INST_R5, // $R5
INST_R6, // $R6
INST_R7, // $R7
INST_R8, // $R8
INST_R9, // $R9
INST_CMDLINE, // $CMDLINE
INST_INSTDIR, // $INSTDIR
INST_OUTDIR, // $OUTDIR
INST_EXEDIR, // $EXEDIR
INST_LANG, // $LANGUAGE
__INST_LAST
);
TVariableList = INST_0..__INST_LAST;
pstack_t = ^stack_t;
stack_t = record
next: pstack_t;
text: PChar;
end;
var
g_stringsize: integer;
g_stacktop: ^pstack_t;
g_variables: PChar;
g_hwndParent: HWND;
procedure Init(const hwndParent: HWND; const string_size: integer; const variables: PChar; const stacktop: pointer);
function PopString(): string;
procedure PushString(const str: string='');
function GetUserVariable(const varnum: TVariableList): string;
procedure SetUserVariable(const varnum: TVariableList; const value: string);
procedure NSISDialog(const text, caption: string; const buttons: integer);
implementation
procedure Init(const hwndParent: HWND; const string_size: integer; const variables: PChar; const stacktop: pointer);
begin
g_stringsize := string_size;
g_hwndParent := hwndParent;
g_stacktop := stacktop;
g_variables := variables;
end;
function PopString(): string;
var
th: pstack_t;
begin
if integer(g_stacktop^) <> 0 then begin
th := g_stacktop^;
Result := PChar(@th.text);
g_stacktop^ := th.next;
GlobalFree(HGLOBAL(th));
end;
end;
procedure PushString(const str: string='');
var
th: pstack_t;
begin
if integer(g_stacktop) <> 0 then begin
th := pstack_t(GlobalAlloc(GPTR, SizeOf(stack_t) + g_stringsize));
lstrcpyn(@th.text, PChar(str), g_stringsize);
th.next := g_stacktop^;
g_stacktop^ := th;
end;
end;
function GetUserVariable(const varnum: TVariableList): string;
begin
if (integer(varnum) >= 0) and (integer(varnum) < integer(__INST_LAST)) then
Result := g_variables + integer(varnum) * g_stringsize
else
Result := '';
end;
procedure SetUserVariable(const varnum: TVariableList; const value: string);
begin
if (value <> '') and (integer(varnum) >= 0) and (integer(varnum) < integer(__INST_LAST)) then
lstrcpy(g_variables + integer(varnum) * g_stringsize, PChar(value))
end;
procedure NSISDialog(const text, caption: string; const buttons: integer);
begin
MessageBox(g_hwndParent, PChar(text), PChar(caption), buttons);
end;
begin
end.

Binary file not shown.

View file

@ -0,0 +1,850 @@
unit NetFwTypeLib_TLB;
// ************************************************************************ //
// WARNUNG
// -------
// Die in dieser Datei deklarierten Typen wurden aus Daten einer Typbibliothek
// generiert. Wenn diese Typbibliothek explizit oder indirekt (über eine
// andere Typbibliothek) reimportiert wird oder wenn die Anweisung
// 'Aktualisieren' im Typbibliotheks-Editor während des Bearbeitens der
// Typbibliothek aktiviert ist, wird der Inhalt dieser Datei neu generiert und
// alle manuell vorgenommenen Änderungen gehen verloren.
// ************************************************************************ //
// PASTLWTR : $Revision: 1.130.1.0.1.0.1.6 $
// Datei generiert am 20.05.2007 16:34:09 aus der unten beschriebenen Typbibliothek.
// ************************************************************************ //
// Type Lib: FirewallAPI.dll (1)
// LIBID: {58FBCF7C-E7A9-467C-80B3-FC65E8FCCA08}
// LCID: 0
// Helpfile:
// DepndLst:
// (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb)
// (2) v4.0 StdVCL, (C:\WINDOWS\system32\stdvcl40.dll)
// Fehler
// Hinweis: Element 'Type' von 'INetFwService' geändert in 'Type_'
// Hinweis: Parameter 'Type' im INetFwService.Type geändert in 'Type_'
// Hinweis: Element 'Type' von 'INetFwProfile' geändert in 'Type_'
// Hinweis: Parameter 'Type' im INetFwProfile.Type geändert in 'Type_'
// Hinweis: Parameter 'Type' im INetFwMgr.IsIcmpTypeAllowed geändert in 'Type_'
// Hinweis: Element 'Type' von 'INetFwService' geändert in 'Type_'
// Hinweis: Element 'Type' von 'INetFwProfile' geändert in 'Type_'
// ************************************************************************ //
// *************************************************************************//
// HINWEIS:
// Von $IFDEF_LIVE_SERVER_AT_DESIGN_TIME überwachte Einträge, werden von
// Eigenschaften verwendet, die Objekte zurückgeben, die explizit mit einen Funktionsaufruf
// vor dem Zugriff über die Eigenschaft erzeugt werden müssen. Diese Einträge wurden deaktiviert,
// um deren unbeabsichtigte Benutzung im Objektinspektor zu verhindern. Sie können sie
// aktivieren, indem Sie LIVE_SERVER_AT_DESIGN_TIME definieren oder sie selektiv
// aus den $IFDEF-Blöcken entfernen. Solche Einträge müssen jedoch programmseitig
// mit einer Methode der geeigneten CoClass vor der Verwendung
// erzeugt werden.
{$TYPEDADDRESS OFF} // Unit muß ohne Typüberprüfung für Zeiger compiliert werden.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface
uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants;
// *********************************************************************//
// In dieser Typbibliothek deklarierte GUIDS . Es werden folgende
// Präfixe verwendet:
// Typbibliotheken : LIBID_xxxx
// CoClasses : CLASS_xxxx
// DISPInterfaces : DIID_xxxx
// Nicht-DISP-Schnittstellen: IID_xxxx
// *********************************************************************//
const
// Haupt- und Nebenversionen der Typbibliothek
NetFwTypeLibMajorVersion = 1;
NetFwTypeLibMinorVersion = 0;
LIBID_NetFwTypeLib: TGUID = '{58FBCF7C-E7A9-467C-80B3-FC65E8FCCA08}';
IID_INetFwRemoteAdminSettings: TGUID = '{D4BECDDF-6F73-4A83-B832-9C66874CD20E}';
IID_INetFwIcmpSettings: TGUID = '{A6207B2E-7CDD-426A-951E-5E1CBC5AFEAD}';
IID_INetFwOpenPort: TGUID = '{E0483BA0-47FF-4D9C-A6D6-7741D0B195F7}';
IID_INetFwOpenPorts: TGUID = '{C0E9D7FA-E07E-430A-B19A-090CE82D92E2}';
IID_INetFwService: TGUID = '{79FD57C8-908E-4A36-9888-D5B3F0A444CF}';
IID_INetFwServices: TGUID = '{79649BB4-903E-421B-94C9-79848E79F6EE}';
IID_INetFwAuthorizedApplication: TGUID = '{B5E64FFA-C2C5-444E-A301-FB5E00018050}';
IID_INetFwAuthorizedApplications: TGUID = '{644EFD52-CCF9-486C-97A2-39F352570B30}';
IID_INetFwServiceRestriction: TGUID = '{8267BBE3-F890-491C-B7B6-2DB1EF0E5D2B}';
IID_INetFwRules: TGUID = '{9C4C6277-5027-441E-AFAE-CA1F542DA009}';
IID_INetFwRule: TGUID = '{AF230D27-BABA-4E42-ACED-F524F22CFCE2}';
IID_INetFwProfile: TGUID = '{174A0DDA-E9F9-449D-993B-21AB667CA456}';
IID_INetFwPolicy: TGUID = '{D46D2478-9AC9-4008-9DC7-5563CE5536CC}';
IID_INetFwPolicy2: TGUID = '{98325047-C671-4174-8D81-DEFCD3F03186}';
IID_INetFwMgr: TGUID = '{F7898AF5-CAC4-4632-A2EC-DA06E5111AF2}';
// *********************************************************************//
// Deklaration von in der Typbibliothek definierten Enumerationen
// *********************************************************************//
// Konstanten für enum NET_FW_IP_VERSION_
type
NET_FW_IP_VERSION_ = TOleEnum;
const
NET_FW_IP_VERSION_V4 = $00000000;
NET_FW_IP_VERSION_V6 = $00000001;
NET_FW_IP_VERSION_ANY = $00000002;
NET_FW_IP_VERSION_MAX = $00000003;
// Konstanten für enum NET_FW_SCOPE_
type
NET_FW_SCOPE_ = TOleEnum;
const
NET_FW_SCOPE_ALL = $00000000;
NET_FW_SCOPE_LOCAL_SUBNET = $00000001;
NET_FW_SCOPE_CUSTOM = $00000002;
NET_FW_SCOPE_MAX = $00000003;
// Konstanten für enum NET_FW_IP_PROTOCOL_
type
NET_FW_IP_PROTOCOL_ = TOleEnum;
const
NET_FW_IP_PROTOCOL_TCP = $00000006;
NET_FW_IP_PROTOCOL_UDP = $00000011;
NET_FW_IP_PROTOCOL_ANY = $00000100;
// Konstanten für enum NET_FW_SERVICE_TYPE_
type
NET_FW_SERVICE_TYPE_ = TOleEnum;
const
NET_FW_SERVICE_FILE_AND_PRINT = $00000000;
NET_FW_SERVICE_UPNP = $00000001;
NET_FW_SERVICE_REMOTE_DESKTOP = $00000002;
NET_FW_SERVICE_NONE = $00000003;
NET_FW_SERVICE_TYPE_MAX = $00000004;
// Konstanten für enum NET_FW_RULE_DIRECTION_
type
NET_FW_RULE_DIRECTION_ = TOleEnum;
const
NET_FW_RULE_DIR_IN = $00000001;
NET_FW_RULE_DIR_OUT = $00000002;
NET_FW_RULE_DIR_MAX = $00000003;
// Konstanten für enum NET_FW_ACTION_
type
NET_FW_ACTION_ = TOleEnum;
const
NET_FW_ACTION_BLOCK = $00000000;
NET_FW_ACTION_ALLOW = $00000001;
NET_FW_ACTION_MAX = $00000002;
// Konstanten für enum NET_FW_PROFILE_TYPE_
type
NET_FW_PROFILE_TYPE_ = TOleEnum;
const
NET_FW_PROFILE_DOMAIN = $00000000;
NET_FW_PROFILE_STANDARD = $00000001;
NET_FW_PROFILE_CURRENT = $00000002;
NET_FW_PROFILE_TYPE_MAX = $00000003;
// Konstanten für enum NET_FW_PROFILE_TYPE2_
type
NET_FW_PROFILE_TYPE2_ = TOleEnum;
const
NET_FW_PROFILE2_DOMAIN = $00000001;
NET_FW_PROFILE2_PRIVATE = $00000002;
NET_FW_PROFILE2_PUBLIC = $00000004;
NET_FW_PROFILE2_ALL = $7FFFFFFF;
// Konstanten für enum NET_FW_MODIFY_STATE_
type
NET_FW_MODIFY_STATE_ = TOleEnum;
const
NET_FW_MODIFY_STATE_OK = $00000000;
NET_FW_MODIFY_STATE_GP_OVERRIDE = $00000001;
NET_FW_MODIFY_STATE_INBOUND_BLOCKED = $00000002;
type
// *********************************************************************//
// Forward-Deklaration von in der Typbibliothek definierten Typen
// *********************************************************************//
INetFwRemoteAdminSettings = interface;
INetFwRemoteAdminSettingsDisp = dispinterface;
INetFwIcmpSettings = interface;
INetFwIcmpSettingsDisp = dispinterface;
INetFwOpenPort = interface;
INetFwOpenPortDisp = dispinterface;
INetFwOpenPorts = interface;
INetFwOpenPortsDisp = dispinterface;
INetFwService = interface;
INetFwServiceDisp = dispinterface;
INetFwServices = interface;
INetFwServicesDisp = dispinterface;
INetFwAuthorizedApplication = interface;
INetFwAuthorizedApplicationDisp = dispinterface;
INetFwAuthorizedApplications = interface;
INetFwAuthorizedApplicationsDisp = dispinterface;
INetFwServiceRestriction = interface;
INetFwServiceRestrictionDisp = dispinterface;
INetFwRules = interface;
INetFwRulesDisp = dispinterface;
INetFwRule = interface;
INetFwRuleDisp = dispinterface;
INetFwProfile = interface;
INetFwProfileDisp = dispinterface;
INetFwPolicy = interface;
INetFwPolicyDisp = dispinterface;
INetFwPolicy2 = interface;
INetFwPolicy2Disp = dispinterface;
INetFwMgr = interface;
INetFwMgrDisp = dispinterface;
// *********************************************************************//
// Schnittstelle: INetFwRemoteAdminSettings
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {D4BECDDF-6F73-4A83-B832-9C66874CD20E}
// *********************************************************************//
INetFwRemoteAdminSettings = interface(IDispatch)
['{D4BECDDF-6F73-4A83-B832-9C66874CD20E}']
function Get_IpVersion: NET_FW_IP_VERSION_; safecall;
procedure Set_IpVersion(IpVersion: NET_FW_IP_VERSION_); safecall;
function Get_Scope: NET_FW_SCOPE_; safecall;
procedure Set_Scope(Scope: NET_FW_SCOPE_); safecall;
function Get_RemoteAddresses: WideString; safecall;
procedure Set_RemoteAddresses(const remoteAddrs: WideString); safecall;
function Get_Enabled: WordBool; safecall;
procedure Set_Enabled(Enabled: WordBool); safecall;
property IpVersion: NET_FW_IP_VERSION_ read Get_IpVersion write Set_IpVersion;
property Scope: NET_FW_SCOPE_ read Get_Scope write Set_Scope;
property RemoteAddresses: WideString read Get_RemoteAddresses write Set_RemoteAddresses;
property Enabled: WordBool read Get_Enabled write Set_Enabled;
end;
// *********************************************************************//
// DispIntf: INetFwRemoteAdminSettingsDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {D4BECDDF-6F73-4A83-B832-9C66874CD20E}
// *********************************************************************//
INetFwRemoteAdminSettingsDisp = dispinterface
['{D4BECDDF-6F73-4A83-B832-9C66874CD20E}']
property IpVersion: NET_FW_IP_VERSION_ dispid 1;
property Scope: NET_FW_SCOPE_ dispid 2;
property RemoteAddresses: WideString dispid 3;
property Enabled: WordBool dispid 4;
end;
// *********************************************************************//
// Schnittstelle: INetFwIcmpSettings
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {A6207B2E-7CDD-426A-951E-5E1CBC5AFEAD}
// *********************************************************************//
INetFwIcmpSettings = interface(IDispatch)
['{A6207B2E-7CDD-426A-951E-5E1CBC5AFEAD}']
function Get_AllowOutboundDestinationUnreachable: WordBool; safecall;
procedure Set_AllowOutboundDestinationUnreachable(allow: WordBool); safecall;
function Get_AllowRedirect: WordBool; safecall;
procedure Set_AllowRedirect(allow: WordBool); safecall;
function Get_AllowInboundEchoRequest: WordBool; safecall;
procedure Set_AllowInboundEchoRequest(allow: WordBool); safecall;
function Get_AllowOutboundTimeExceeded: WordBool; safecall;
procedure Set_AllowOutboundTimeExceeded(allow: WordBool); safecall;
function Get_AllowOutboundParameterProblem: WordBool; safecall;
procedure Set_AllowOutboundParameterProblem(allow: WordBool); safecall;
function Get_AllowOutboundSourceQuench: WordBool; safecall;
procedure Set_AllowOutboundSourceQuench(allow: WordBool); safecall;
function Get_AllowInboundRouterRequest: WordBool; safecall;
procedure Set_AllowInboundRouterRequest(allow: WordBool); safecall;
function Get_AllowInboundTimestampRequest: WordBool; safecall;
procedure Set_AllowInboundTimestampRequest(allow: WordBool); safecall;
function Get_AllowInboundMaskRequest: WordBool; safecall;
procedure Set_AllowInboundMaskRequest(allow: WordBool); safecall;
function Get_AllowOutboundPacketTooBig: WordBool; safecall;
procedure Set_AllowOutboundPacketTooBig(allow: WordBool); safecall;
property AllowOutboundDestinationUnreachable: WordBool read Get_AllowOutboundDestinationUnreachable write Set_AllowOutboundDestinationUnreachable;
property AllowRedirect: WordBool read Get_AllowRedirect write Set_AllowRedirect;
property AllowInboundEchoRequest: WordBool read Get_AllowInboundEchoRequest write Set_AllowInboundEchoRequest;
property AllowOutboundTimeExceeded: WordBool read Get_AllowOutboundTimeExceeded write Set_AllowOutboundTimeExceeded;
property AllowOutboundParameterProblem: WordBool read Get_AllowOutboundParameterProblem write Set_AllowOutboundParameterProblem;
property AllowOutboundSourceQuench: WordBool read Get_AllowOutboundSourceQuench write Set_AllowOutboundSourceQuench;
property AllowInboundRouterRequest: WordBool read Get_AllowInboundRouterRequest write Set_AllowInboundRouterRequest;
property AllowInboundTimestampRequest: WordBool read Get_AllowInboundTimestampRequest write Set_AllowInboundTimestampRequest;
property AllowInboundMaskRequest: WordBool read Get_AllowInboundMaskRequest write Set_AllowInboundMaskRequest;
property AllowOutboundPacketTooBig: WordBool read Get_AllowOutboundPacketTooBig write Set_AllowOutboundPacketTooBig;
end;
// *********************************************************************//
// DispIntf: INetFwIcmpSettingsDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {A6207B2E-7CDD-426A-951E-5E1CBC5AFEAD}
// *********************************************************************//
INetFwIcmpSettingsDisp = dispinterface
['{A6207B2E-7CDD-426A-951E-5E1CBC5AFEAD}']
property AllowOutboundDestinationUnreachable: WordBool dispid 1;
property AllowRedirect: WordBool dispid 2;
property AllowInboundEchoRequest: WordBool dispid 3;
property AllowOutboundTimeExceeded: WordBool dispid 4;
property AllowOutboundParameterProblem: WordBool dispid 5;
property AllowOutboundSourceQuench: WordBool dispid 6;
property AllowInboundRouterRequest: WordBool dispid 7;
property AllowInboundTimestampRequest: WordBool dispid 8;
property AllowInboundMaskRequest: WordBool dispid 9;
property AllowOutboundPacketTooBig: WordBool dispid 10;
end;
// *********************************************************************//
// Schnittstelle: INetFwOpenPort
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {E0483BA0-47FF-4D9C-A6D6-7741D0B195F7}
// *********************************************************************//
INetFwOpenPort = interface(IDispatch)
['{E0483BA0-47FF-4D9C-A6D6-7741D0B195F7}']
function Get_Name: WideString; safecall;
procedure Set_Name(const Name: WideString); safecall;
function Get_IpVersion: NET_FW_IP_VERSION_; safecall;
procedure Set_IpVersion(IpVersion: NET_FW_IP_VERSION_); safecall;
function Get_Protocol: NET_FW_IP_PROTOCOL_; safecall;
procedure Set_Protocol(ipProtocol: NET_FW_IP_PROTOCOL_); safecall;
function Get_Port: Integer; safecall;
procedure Set_Port(portNumber: Integer); safecall;
function Get_Scope: NET_FW_SCOPE_; safecall;
procedure Set_Scope(Scope: NET_FW_SCOPE_); safecall;
function Get_RemoteAddresses: WideString; safecall;
procedure Set_RemoteAddresses(const remoteAddrs: WideString); safecall;
function Get_Enabled: WordBool; safecall;
procedure Set_Enabled(Enabled: WordBool); safecall;
function Get_BuiltIn: WordBool; safecall;
property Name: WideString read Get_Name write Set_Name;
property IpVersion: NET_FW_IP_VERSION_ read Get_IpVersion write Set_IpVersion;
property Protocol: NET_FW_IP_PROTOCOL_ read Get_Protocol write Set_Protocol;
property Port: Integer read Get_Port write Set_Port;
property Scope: NET_FW_SCOPE_ read Get_Scope write Set_Scope;
property RemoteAddresses: WideString read Get_RemoteAddresses write Set_RemoteAddresses;
property Enabled: WordBool read Get_Enabled write Set_Enabled;
property BuiltIn: WordBool read Get_BuiltIn;
end;
// *********************************************************************//
// DispIntf: INetFwOpenPortDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {E0483BA0-47FF-4D9C-A6D6-7741D0B195F7}
// *********************************************************************//
INetFwOpenPortDisp = dispinterface
['{E0483BA0-47FF-4D9C-A6D6-7741D0B195F7}']
property Name: WideString dispid 1;
property IpVersion: NET_FW_IP_VERSION_ dispid 2;
property Protocol: NET_FW_IP_PROTOCOL_ dispid 3;
property Port: Integer dispid 4;
property Scope: NET_FW_SCOPE_ dispid 5;
property RemoteAddresses: WideString dispid 6;
property Enabled: WordBool dispid 7;
property BuiltIn: WordBool readonly dispid 8;
end;
// *********************************************************************//
// Schnittstelle: INetFwOpenPorts
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {C0E9D7FA-E07E-430A-B19A-090CE82D92E2}
// *********************************************************************//
INetFwOpenPorts = interface(IDispatch)
['{C0E9D7FA-E07E-430A-B19A-090CE82D92E2}']
function Get_Count: Integer; safecall;
procedure Add(const Port: INetFwOpenPort); safecall;
procedure Remove(portNumber: Integer; ipProtocol: NET_FW_IP_PROTOCOL_); safecall;
function Item(portNumber: Integer; ipProtocol: NET_FW_IP_PROTOCOL_): INetFwOpenPort; safecall;
function Get__NewEnum: IUnknown; safecall;
property Count: Integer read Get_Count;
property _NewEnum: IUnknown read Get__NewEnum;
end;
// *********************************************************************//
// DispIntf: INetFwOpenPortsDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {C0E9D7FA-E07E-430A-B19A-090CE82D92E2}
// *********************************************************************//
INetFwOpenPortsDisp = dispinterface
['{C0E9D7FA-E07E-430A-B19A-090CE82D92E2}']
property Count: Integer readonly dispid 1;
procedure Add(const Port: INetFwOpenPort); dispid 2;
procedure Remove(portNumber: Integer; ipProtocol: NET_FW_IP_PROTOCOL_); dispid 3;
function Item(portNumber: Integer; ipProtocol: NET_FW_IP_PROTOCOL_): INetFwOpenPort; dispid 4;
property _NewEnum: IUnknown readonly dispid -4;
end;
// *********************************************************************//
// Schnittstelle: INetFwService
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {79FD57C8-908E-4A36-9888-D5B3F0A444CF}
// *********************************************************************//
INetFwService = interface(IDispatch)
['{79FD57C8-908E-4A36-9888-D5B3F0A444CF}']
function Get_Name: WideString; safecall;
function Get_Type_: NET_FW_SERVICE_TYPE_; safecall;
function Get_Customized: WordBool; safecall;
function Get_IpVersion: NET_FW_IP_VERSION_; safecall;
procedure Set_IpVersion(IpVersion: NET_FW_IP_VERSION_); safecall;
function Get_Scope: NET_FW_SCOPE_; safecall;
procedure Set_Scope(Scope: NET_FW_SCOPE_); safecall;
function Get_RemoteAddresses: WideString; safecall;
procedure Set_RemoteAddresses(const remoteAddrs: WideString); safecall;
function Get_Enabled: WordBool; safecall;
procedure Set_Enabled(Enabled: WordBool); safecall;
function Get_GloballyOpenPorts: INetFwOpenPorts; safecall;
property Name: WideString read Get_Name;
property Type_: NET_FW_SERVICE_TYPE_ read Get_Type_;
property Customized: WordBool read Get_Customized;
property IpVersion: NET_FW_IP_VERSION_ read Get_IpVersion write Set_IpVersion;
property Scope: NET_FW_SCOPE_ read Get_Scope write Set_Scope;
property RemoteAddresses: WideString read Get_RemoteAddresses write Set_RemoteAddresses;
property Enabled: WordBool read Get_Enabled write Set_Enabled;
property GloballyOpenPorts: INetFwOpenPorts read Get_GloballyOpenPorts;
end;
// *********************************************************************//
// DispIntf: INetFwServiceDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {79FD57C8-908E-4A36-9888-D5B3F0A444CF}
// *********************************************************************//
INetFwServiceDisp = dispinterface
['{79FD57C8-908E-4A36-9888-D5B3F0A444CF}']
property Name: WideString readonly dispid 1;
property Type_: NET_FW_SERVICE_TYPE_ readonly dispid 2;
property Customized: WordBool readonly dispid 3;
property IpVersion: NET_FW_IP_VERSION_ dispid 4;
property Scope: NET_FW_SCOPE_ dispid 5;
property RemoteAddresses: WideString dispid 6;
property Enabled: WordBool dispid 7;
property GloballyOpenPorts: INetFwOpenPorts readonly dispid 8;
end;
// *********************************************************************//
// Schnittstelle: INetFwServices
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {79649BB4-903E-421B-94C9-79848E79F6EE}
// *********************************************************************//
INetFwServices = interface(IDispatch)
['{79649BB4-903E-421B-94C9-79848E79F6EE}']
function Get_Count: Integer; safecall;
function Item(svcType: NET_FW_SERVICE_TYPE_): INetFwService; safecall;
function Get__NewEnum: IUnknown; safecall;
property Count: Integer read Get_Count;
property _NewEnum: IUnknown read Get__NewEnum;
end;
// *********************************************************************//
// DispIntf: INetFwServicesDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {79649BB4-903E-421B-94C9-79848E79F6EE}
// *********************************************************************//
INetFwServicesDisp = dispinterface
['{79649BB4-903E-421B-94C9-79848E79F6EE}']
property Count: Integer readonly dispid 1;
function Item(svcType: NET_FW_SERVICE_TYPE_): INetFwService; dispid 2;
property _NewEnum: IUnknown readonly dispid -4;
end;
// *********************************************************************//
// Schnittstelle: INetFwAuthorizedApplication
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {B5E64FFA-C2C5-444E-A301-FB5E00018050}
// *********************************************************************//
INetFwAuthorizedApplication = interface(IDispatch)
['{B5E64FFA-C2C5-444E-A301-FB5E00018050}']
function Get_Name: WideString; safecall;
procedure Set_Name(const Name: WideString); safecall;
function Get_ProcessImageFileName: WideString; safecall;
procedure Set_ProcessImageFileName(const imageFileName: WideString); safecall;
function Get_IpVersion: NET_FW_IP_VERSION_; safecall;
procedure Set_IpVersion(IpVersion: NET_FW_IP_VERSION_); safecall;
function Get_Scope: NET_FW_SCOPE_; safecall;
procedure Set_Scope(Scope: NET_FW_SCOPE_); safecall;
function Get_RemoteAddresses: WideString; safecall;
procedure Set_RemoteAddresses(const remoteAddrs: WideString); safecall;
function Get_Enabled: WordBool; safecall;
procedure Set_Enabled(Enabled: WordBool); safecall;
property Name: WideString read Get_Name write Set_Name;
property ProcessImageFileName: WideString read Get_ProcessImageFileName write Set_ProcessImageFileName;
property IpVersion: NET_FW_IP_VERSION_ read Get_IpVersion write Set_IpVersion;
property Scope: NET_FW_SCOPE_ read Get_Scope write Set_Scope;
property RemoteAddresses: WideString read Get_RemoteAddresses write Set_RemoteAddresses;
property Enabled: WordBool read Get_Enabled write Set_Enabled;
end;
// *********************************************************************//
// DispIntf: INetFwAuthorizedApplicationDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {B5E64FFA-C2C5-444E-A301-FB5E00018050}
// *********************************************************************//
INetFwAuthorizedApplicationDisp = dispinterface
['{B5E64FFA-C2C5-444E-A301-FB5E00018050}']
property Name: WideString dispid 1;
property ProcessImageFileName: WideString dispid 2;
property IpVersion: NET_FW_IP_VERSION_ dispid 3;
property Scope: NET_FW_SCOPE_ dispid 4;
property RemoteAddresses: WideString dispid 5;
property Enabled: WordBool dispid 6;
end;
// *********************************************************************//
// Schnittstelle: INetFwAuthorizedApplications
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {644EFD52-CCF9-486C-97A2-39F352570B30}
// *********************************************************************//
INetFwAuthorizedApplications = interface(IDispatch)
['{644EFD52-CCF9-486C-97A2-39F352570B30}']
function Get_Count: Integer; safecall;
procedure Add(const app: INetFwAuthorizedApplication); safecall;
procedure Remove(const imageFileName: WideString); safecall;
function Item(const imageFileName: WideString): INetFwAuthorizedApplication; safecall;
function Get__NewEnum: IUnknown; safecall;
property Count: Integer read Get_Count;
property _NewEnum: IUnknown read Get__NewEnum;
end;
// *********************************************************************//
// DispIntf: INetFwAuthorizedApplicationsDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {644EFD52-CCF9-486C-97A2-39F352570B30}
// *********************************************************************//
INetFwAuthorizedApplicationsDisp = dispinterface
['{644EFD52-CCF9-486C-97A2-39F352570B30}']
property Count: Integer readonly dispid 1;
procedure Add(const app: INetFwAuthorizedApplication); dispid 2;
procedure Remove(const imageFileName: WideString); dispid 3;
function Item(const imageFileName: WideString): INetFwAuthorizedApplication; dispid 4;
property _NewEnum: IUnknown readonly dispid -4;
end;
// *********************************************************************//
// Schnittstelle: INetFwServiceRestriction
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {8267BBE3-F890-491C-B7B6-2DB1EF0E5D2B}
// *********************************************************************//
INetFwServiceRestriction = interface(IDispatch)
['{8267BBE3-F890-491C-B7B6-2DB1EF0E5D2B}']
procedure RestrictService(const serviceName: WideString; const appName: WideString;
RestrictService: WordBool; serviceSidRestricted: WordBool); safecall;
function ServiceRestricted(const serviceName: WideString; const appName: WideString): WordBool; safecall;
function Get_Rules: INetFwRules; safecall;
property Rules: INetFwRules read Get_Rules;
end;
// *********************************************************************//
// DispIntf: INetFwServiceRestrictionDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {8267BBE3-F890-491C-B7B6-2DB1EF0E5D2B}
// *********************************************************************//
INetFwServiceRestrictionDisp = dispinterface
['{8267BBE3-F890-491C-B7B6-2DB1EF0E5D2B}']
procedure RestrictService(const serviceName: WideString; const appName: WideString;
RestrictService: WordBool; serviceSidRestricted: WordBool); dispid 1;
function ServiceRestricted(const serviceName: WideString; const appName: WideString): WordBool; dispid 2;
property Rules: INetFwRules readonly dispid 3;
end;
// *********************************************************************//
// Schnittstelle: INetFwRules
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {9C4C6277-5027-441E-AFAE-CA1F542DA009}
// *********************************************************************//
INetFwRules = interface(IDispatch)
['{9C4C6277-5027-441E-AFAE-CA1F542DA009}']
function Get_Count: Integer; safecall;
procedure Add(const rule: INetFwRule); safecall;
procedure Remove(const Name: WideString); safecall;
function Item(const Name: WideString): INetFwRule; safecall;
function Get__NewEnum: IUnknown; safecall;
property Count: Integer read Get_Count;
property _NewEnum: IUnknown read Get__NewEnum;
end;
// *********************************************************************//
// DispIntf: INetFwRulesDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {9C4C6277-5027-441E-AFAE-CA1F542DA009}
// *********************************************************************//
INetFwRulesDisp = dispinterface
['{9C4C6277-5027-441E-AFAE-CA1F542DA009}']
property Count: Integer readonly dispid 1;
procedure Add(const rule: INetFwRule); dispid 2;
procedure Remove(const Name: WideString); dispid 3;
function Item(const Name: WideString): INetFwRule; dispid 4;
property _NewEnum: IUnknown readonly dispid -4;
end;
// *********************************************************************//
// Schnittstelle: INetFwRule
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {AF230D27-BABA-4E42-ACED-F524F22CFCE2}
// *********************************************************************//
INetFwRule = interface(IDispatch)
['{AF230D27-BABA-4E42-ACED-F524F22CFCE2}']
function Get_Name: WideString; safecall;
procedure Set_Name(const Name: WideString); safecall;
function Get_Description: WideString; safecall;
procedure Set_Description(const desc: WideString); safecall;
function Get_ApplicationName: WideString; safecall;
procedure Set_ApplicationName(const imageFileName: WideString); safecall;
function Get_serviceName: WideString; safecall;
procedure Set_serviceName(const serviceName: WideString); safecall;
function Get_Protocol: Integer; safecall;
procedure Set_Protocol(Protocol: Integer); safecall;
function Get_LocalPorts: WideString; safecall;
procedure Set_LocalPorts(const portNumbers: WideString); safecall;
function Get_RemotePorts: WideString; safecall;
procedure Set_RemotePorts(const portNumbers: WideString); safecall;
function Get_LocalAddresses: WideString; safecall;
procedure Set_LocalAddresses(const localAddrs: WideString); safecall;
function Get_RemoteAddresses: WideString; safecall;
procedure Set_RemoteAddresses(const remoteAddrs: WideString); safecall;
function Get_IcmpTypesAndCodes: WideString; safecall;
procedure Set_IcmpTypesAndCodes(const IcmpTypesAndCodes: WideString); safecall;
function Get_Direction: NET_FW_RULE_DIRECTION_; safecall;
procedure Set_Direction(dir: NET_FW_RULE_DIRECTION_); safecall;
function Get_Interfaces: OleVariant; safecall;
procedure Set_Interfaces(Interfaces: OleVariant); safecall;
function Get_InterfaceTypes: WideString; safecall;
procedure Set_InterfaceTypes(const InterfaceTypes: WideString); safecall;
function Get_Enabled: WordBool; safecall;
procedure Set_Enabled(Enabled: WordBool); safecall;
function Get_Grouping: WideString; safecall;
procedure Set_Grouping(const context: WideString); safecall;
function Get_Profiles: Integer; safecall;
procedure Set_Profiles(profileTypesBitmask: Integer); safecall;
function Get_EdgeTraversal: WordBool; safecall;
procedure Set_EdgeTraversal(Enabled: WordBool); safecall;
function Get_Action: NET_FW_ACTION_; safecall;
procedure Set_Action(Action: NET_FW_ACTION_); safecall;
property Name: WideString read Get_Name write Set_Name;
property Description: WideString read Get_Description write Set_Description;
property ApplicationName: WideString read Get_ApplicationName write Set_ApplicationName;
property serviceName: WideString read Get_serviceName write Set_serviceName;
property Protocol: Integer read Get_Protocol write Set_Protocol;
property LocalPorts: WideString read Get_LocalPorts write Set_LocalPorts;
property RemotePorts: WideString read Get_RemotePorts write Set_RemotePorts;
property LocalAddresses: WideString read Get_LocalAddresses write Set_LocalAddresses;
property RemoteAddresses: WideString read Get_RemoteAddresses write Set_RemoteAddresses;
property IcmpTypesAndCodes: WideString read Get_IcmpTypesAndCodes write Set_IcmpTypesAndCodes;
property Direction: NET_FW_RULE_DIRECTION_ read Get_Direction write Set_Direction;
property Interfaces: OleVariant read Get_Interfaces write Set_Interfaces;
property InterfaceTypes: WideString read Get_InterfaceTypes write Set_InterfaceTypes;
property Enabled: WordBool read Get_Enabled write Set_Enabled;
property Grouping: WideString read Get_Grouping write Set_Grouping;
property Profiles: Integer read Get_Profiles write Set_Profiles;
property EdgeTraversal: WordBool read Get_EdgeTraversal write Set_EdgeTraversal;
property Action: NET_FW_ACTION_ read Get_Action write Set_Action;
end;
// *********************************************************************//
// DispIntf: INetFwRuleDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {AF230D27-BABA-4E42-ACED-F524F22CFCE2}
// *********************************************************************//
INetFwRuleDisp = dispinterface
['{AF230D27-BABA-4E42-ACED-F524F22CFCE2}']
property Name: WideString dispid 1;
property Description: WideString dispid 2;
property ApplicationName: WideString dispid 3;
property serviceName: WideString dispid 4;
property Protocol: Integer dispid 5;
property LocalPorts: WideString dispid 6;
property RemotePorts: WideString dispid 7;
property LocalAddresses: WideString dispid 8;
property RemoteAddresses: WideString dispid 9;
property IcmpTypesAndCodes: WideString dispid 10;
property Direction: NET_FW_RULE_DIRECTION_ dispid 11;
property Interfaces: OleVariant dispid 12;
property InterfaceTypes: WideString dispid 13;
property Enabled: WordBool dispid 14;
property Grouping: WideString dispid 15;
property Profiles: Integer dispid 16;
property EdgeTraversal: WordBool dispid 17;
property Action: NET_FW_ACTION_ dispid 18;
end;
// *********************************************************************//
// Schnittstelle: INetFwProfile
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {174A0DDA-E9F9-449D-993B-21AB667CA456}
// *********************************************************************//
INetFwProfile = interface(IDispatch)
['{174A0DDA-E9F9-449D-993B-21AB667CA456}']
function Get_Type_: NET_FW_PROFILE_TYPE_; safecall;
function Get_FirewallEnabled: WordBool; safecall;
procedure Set_FirewallEnabled(Enabled: WordBool); safecall;
function Get_ExceptionsNotAllowed: WordBool; safecall;
procedure Set_ExceptionsNotAllowed(notAllowed: WordBool); safecall;
function Get_NotificationsDisabled: WordBool; safecall;
procedure Set_NotificationsDisabled(disabled: WordBool); safecall;
function Get_UnicastResponsesToMulticastBroadcastDisabled: WordBool; safecall;
procedure Set_UnicastResponsesToMulticastBroadcastDisabled(disabled: WordBool); safecall;
function Get_RemoteAdminSettings: INetFwRemoteAdminSettings; safecall;
function Get_IcmpSettings: INetFwIcmpSettings; safecall;
function Get_GloballyOpenPorts: INetFwOpenPorts; safecall;
function Get_Services: INetFwServices; safecall;
function Get_AuthorizedApplications: INetFwAuthorizedApplications; safecall;
property Type_: NET_FW_PROFILE_TYPE_ read Get_Type_;
property FirewallEnabled: WordBool read Get_FirewallEnabled write Set_FirewallEnabled;
property ExceptionsNotAllowed: WordBool read Get_ExceptionsNotAllowed write Set_ExceptionsNotAllowed;
property NotificationsDisabled: WordBool read Get_NotificationsDisabled write Set_NotificationsDisabled;
property UnicastResponsesToMulticastBroadcastDisabled: WordBool read Get_UnicastResponsesToMulticastBroadcastDisabled write Set_UnicastResponsesToMulticastBroadcastDisabled;
property RemoteAdminSettings: INetFwRemoteAdminSettings read Get_RemoteAdminSettings;
property IcmpSettings: INetFwIcmpSettings read Get_IcmpSettings;
property GloballyOpenPorts: INetFwOpenPorts read Get_GloballyOpenPorts;
property Services: INetFwServices read Get_Services;
property AuthorizedApplications: INetFwAuthorizedApplications read Get_AuthorizedApplications;
end;
// *********************************************************************//
// DispIntf: INetFwProfileDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {174A0DDA-E9F9-449D-993B-21AB667CA456}
// *********************************************************************//
INetFwProfileDisp = dispinterface
['{174A0DDA-E9F9-449D-993B-21AB667CA456}']
property Type_: NET_FW_PROFILE_TYPE_ readonly dispid 1;
property FirewallEnabled: WordBool dispid 2;
property ExceptionsNotAllowed: WordBool dispid 3;
property NotificationsDisabled: WordBool dispid 4;
property UnicastResponsesToMulticastBroadcastDisabled: WordBool dispid 5;
property RemoteAdminSettings: INetFwRemoteAdminSettings readonly dispid 6;
property IcmpSettings: INetFwIcmpSettings readonly dispid 7;
property GloballyOpenPorts: INetFwOpenPorts readonly dispid 8;
property Services: INetFwServices readonly dispid 9;
property AuthorizedApplications: INetFwAuthorizedApplications readonly dispid 10;
end;
// *********************************************************************//
// Schnittstelle: INetFwPolicy
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {D46D2478-9AC9-4008-9DC7-5563CE5536CC}
// *********************************************************************//
INetFwPolicy = interface(IDispatch)
['{D46D2478-9AC9-4008-9DC7-5563CE5536CC}']
function Get_CurrentProfile: INetFwProfile; safecall;
function GetProfileByType(profileType: NET_FW_PROFILE_TYPE_): INetFwProfile; safecall;
property CurrentProfile: INetFwProfile read Get_CurrentProfile;
end;
// *********************************************************************//
// DispIntf: INetFwPolicyDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {D46D2478-9AC9-4008-9DC7-5563CE5536CC}
// *********************************************************************//
INetFwPolicyDisp = dispinterface
['{D46D2478-9AC9-4008-9DC7-5563CE5536CC}']
property CurrentProfile: INetFwProfile readonly dispid 1;
function GetProfileByType(profileType: NET_FW_PROFILE_TYPE_): INetFwProfile; dispid 2;
end;
// *********************************************************************//
// Schnittstelle: INetFwPolicy2
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {98325047-C671-4174-8D81-DEFCD3F03186}
// *********************************************************************//
INetFwPolicy2 = interface(IDispatch)
['{98325047-C671-4174-8D81-DEFCD3F03186}']
function Get_CurrentProfileTypes: Integer; safecall;
function Get_FirewallEnabled(profileType: NET_FW_PROFILE_TYPE2_): WordBool; safecall;
procedure Set_FirewallEnabled(profileType: NET_FW_PROFILE_TYPE2_; Enabled: WordBool); safecall;
function Get_ExcludedInterfaces(profileType: NET_FW_PROFILE_TYPE2_): OleVariant; safecall;
procedure Set_ExcludedInterfaces(profileType: NET_FW_PROFILE_TYPE2_; Interfaces: OleVariant); safecall;
function Get_BlockAllInboundTraffic(profileType: NET_FW_PROFILE_TYPE2_): WordBool; safecall;
procedure Set_BlockAllInboundTraffic(profileType: NET_FW_PROFILE_TYPE2_; Block: WordBool); safecall;
function Get_NotificationsDisabled(profileType: NET_FW_PROFILE_TYPE2_): WordBool; safecall;
procedure Set_NotificationsDisabled(profileType: NET_FW_PROFILE_TYPE2_; disabled: WordBool); safecall;
function Get_UnicastResponsesToMulticastBroadcastDisabled(profileType: NET_FW_PROFILE_TYPE2_): WordBool; safecall;
procedure Set_UnicastResponsesToMulticastBroadcastDisabled(profileType: NET_FW_PROFILE_TYPE2_;
disabled: WordBool); safecall;
function Get_Rules: INetFwRules; safecall;
function Get_ServiceRestriction: INetFwServiceRestriction; safecall;
procedure EnableRuleGroup(profileTypesBitmask: Integer; const group: WideString;
enable: WordBool); safecall;
function IsRuleGroupEnabled(profileTypesBitmask: Integer; const group: WideString): WordBool; safecall;
procedure RestoreLocalFirewallDefaults; safecall;
function Get_DefaultInboundAction(profileType: NET_FW_PROFILE_TYPE2_): NET_FW_ACTION_; safecall;
procedure Set_DefaultInboundAction(profileType: NET_FW_PROFILE_TYPE2_; Action: NET_FW_ACTION_); safecall;
function Get_DefaultOutboundAction(profileType: NET_FW_PROFILE_TYPE2_): NET_FW_ACTION_; safecall;
procedure Set_DefaultOutboundAction(profileType: NET_FW_PROFILE_TYPE2_; Action: NET_FW_ACTION_); safecall;
function Get_IsRuleGroupCurrentlyEnabled(const group: WideString): WordBool; safecall;
function Get_LocalPolicyModifyState: NET_FW_MODIFY_STATE_; safecall;
property CurrentProfileTypes: Integer read Get_CurrentProfileTypes;
property FirewallEnabled[profileType: NET_FW_PROFILE_TYPE2_]: WordBool read Get_FirewallEnabled write Set_FirewallEnabled;
property ExcludedInterfaces[profileType: NET_FW_PROFILE_TYPE2_]: OleVariant read Get_ExcludedInterfaces write Set_ExcludedInterfaces;
property BlockAllInboundTraffic[profileType: NET_FW_PROFILE_TYPE2_]: WordBool read Get_BlockAllInboundTraffic write Set_BlockAllInboundTraffic;
property NotificationsDisabled[profileType: NET_FW_PROFILE_TYPE2_]: WordBool read Get_NotificationsDisabled write Set_NotificationsDisabled;
property UnicastResponsesToMulticastBroadcastDisabled[profileType: NET_FW_PROFILE_TYPE2_]: WordBool read Get_UnicastResponsesToMulticastBroadcastDisabled write Set_UnicastResponsesToMulticastBroadcastDisabled;
property Rules: INetFwRules read Get_Rules;
property ServiceRestriction: INetFwServiceRestriction read Get_ServiceRestriction;
property DefaultInboundAction[profileType: NET_FW_PROFILE_TYPE2_]: NET_FW_ACTION_ read Get_DefaultInboundAction write Set_DefaultInboundAction;
property DefaultOutboundAction[profileType: NET_FW_PROFILE_TYPE2_]: NET_FW_ACTION_ read Get_DefaultOutboundAction write Set_DefaultOutboundAction;
property IsRuleGroupCurrentlyEnabled[const group: WideString]: WordBool read Get_IsRuleGroupCurrentlyEnabled;
property LocalPolicyModifyState: NET_FW_MODIFY_STATE_ read Get_LocalPolicyModifyState;
end;
// *********************************************************************//
// DispIntf: INetFwPolicy2Disp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {98325047-C671-4174-8D81-DEFCD3F03186}
// *********************************************************************//
INetFwPolicy2Disp = dispinterface
['{98325047-C671-4174-8D81-DEFCD3F03186}']
property CurrentProfileTypes: Integer readonly dispid 1;
property FirewallEnabled[profileType: NET_FW_PROFILE_TYPE2_]: WordBool dispid 2;
property ExcludedInterfaces[profileType: NET_FW_PROFILE_TYPE2_]: OleVariant dispid 3;
property BlockAllInboundTraffic[profileType: NET_FW_PROFILE_TYPE2_]: WordBool dispid 4;
property NotificationsDisabled[profileType: NET_FW_PROFILE_TYPE2_]: WordBool dispid 5;
property UnicastResponsesToMulticastBroadcastDisabled[profileType: NET_FW_PROFILE_TYPE2_]: WordBool dispid 6;
property Rules: INetFwRules readonly dispid 7;
property ServiceRestriction: INetFwServiceRestriction readonly dispid 8;
procedure EnableRuleGroup(profileTypesBitmask: Integer; const group: WideString;
enable: WordBool); dispid 9;
function IsRuleGroupEnabled(profileTypesBitmask: Integer; const group: WideString): WordBool; dispid 10;
procedure RestoreLocalFirewallDefaults; dispid 11;
property DefaultInboundAction[profileType: NET_FW_PROFILE_TYPE2_]: NET_FW_ACTION_ dispid 12;
property DefaultOutboundAction[profileType: NET_FW_PROFILE_TYPE2_]: NET_FW_ACTION_ dispid 13;
property IsRuleGroupCurrentlyEnabled[const group: WideString]: WordBool readonly dispid 14;
property LocalPolicyModifyState: NET_FW_MODIFY_STATE_ readonly dispid 15;
end;
// *********************************************************************//
// Schnittstelle: INetFwMgr
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {F7898AF5-CAC4-4632-A2EC-DA06E5111AF2}
// *********************************************************************//
INetFwMgr = interface(IDispatch)
['{F7898AF5-CAC4-4632-A2EC-DA06E5111AF2}']
function Get_LocalPolicy: INetFwPolicy; safecall;
function Get_CurrentProfileType: NET_FW_PROFILE_TYPE_; safecall;
procedure RestoreDefaults; safecall;
procedure IsPortAllowed(const imageFileName: WideString; IpVersion: NET_FW_IP_VERSION_;
portNumber: Integer; const localAddress: WideString;
ipProtocol: NET_FW_IP_PROTOCOL_; out allowed: OleVariant;
out restricted: OleVariant); safecall;
procedure IsIcmpTypeAllowed(IpVersion: NET_FW_IP_VERSION_; const localAddress: WideString;
Type_: Byte; out allowed: OleVariant; out restricted: OleVariant); safecall;
property LocalPolicy: INetFwPolicy read Get_LocalPolicy;
property CurrentProfileType: NET_FW_PROFILE_TYPE_ read Get_CurrentProfileType;
end;
// *********************************************************************//
// DispIntf: INetFwMgrDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {F7898AF5-CAC4-4632-A2EC-DA06E5111AF2}
// *********************************************************************//
INetFwMgrDisp = dispinterface
['{F7898AF5-CAC4-4632-A2EC-DA06E5111AF2}']
property LocalPolicy: INetFwPolicy readonly dispid 1;
property CurrentProfileType: NET_FW_PROFILE_TYPE_ readonly dispid 2;
procedure RestoreDefaults; dispid 3;
procedure IsPortAllowed(const imageFileName: WideString; IpVersion: NET_FW_IP_VERSION_;
portNumber: Integer; const localAddress: WideString;
ipProtocol: NET_FW_IP_PROTOCOL_; out allowed: OleVariant;
out restricted: OleVariant); dispid 4;
procedure IsIcmpTypeAllowed(IpVersion: NET_FW_IP_VERSION_; const localAddress: WideString;
Type_: Byte; out allowed: OleVariant; out restricted: OleVariant); dispid 5;
end;
implementation
uses ComObj;
end.

View file

@ -0,0 +1,987 @@
{
License Agreement
This content is subject to the Mozilla Public License Version 1.1 (the "License");
You may not use this plugin except in compliance with the License. You may
obtain a copy of the License at http://www.mozilla.org/MPL.
Alternatively, you may redistribute this library, use and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version. You may obtain a copy
of the LGPL at www.gnu.org/copyleft.
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the License.
The original code is ServiceControl.pas, released April 16, 2007.
The initial developer of the original code is Rainer Budde (http://www.speed-soft.de).
SimpleSC - NSIS Service Control Plugin is written, published and maintaned by
Rainer Budde (rainer@speed-soft.de).
}
unit ServiceControl;
interface
uses
Windows, SysUtils, WinSvc;
function InstallService(ServiceName, DisplayName: String; ServiceType: DWORD; StartType: DWORD; BinaryPathName: String; Dependencies: String; Username: String; Password: String): Integer;
function RemoveService(ServiceName: String): Integer;
function GetServiceName(DisplayName: String; var Name: String): Integer;
function GetServiceDisplayName(ServiceName: String; var Name: String): Integer;
function GetServiceStatus(ServiceName: String; var Status: DWORD): Integer;
function GetServiceBinaryPath(ServiceName: String; var BinaryPath: String): Integer;
function GetServiceStartType(ServiceName: String; var StartType: DWORD): Integer;
function GetServiceDescription(ServiceName: String; var Description: String): Integer;
function GetServiceLogon(ServiceName: String; var Username: String): Integer;
function SetServiceStartType(ServiceName: String; StartType: DWORD): Integer;
function SetServiceDescription(ServiceName: String; Description: String): Integer;
function SetServiceLogon(ServiceName: String; Username: String; Password: String): Integer;
function SetServiceBinaryPath(ServiceName: String; BinaryPath: String): Integer;
function ServiceIsRunning(ServiceName: String; var IsRunning: Boolean): Integer;
function ServiceIsStopped(ServiceName: String; var IsStopped: Boolean): Integer;
function ServiceIsPaused(ServiceName: String; var IsPaused: Boolean): Integer;
function StartService(ServiceName: String; ServiceArguments: String): Integer;
function StopService(ServiceName: String): Integer;
function PauseService(ServiceName: String): Integer;
function ContinueService(ServiceName: String): Integer;
function RestartService(ServiceName: String; ServiceArguments: String): Integer;
function ExistsService(ServiceName: String): Integer;
function GetErrorMessage(ErrorCode: Integer): String;
implementation
function WaitForStatus(ServiceName: String; Status: DWord): Integer;
var
CurrentStatus: DWord;
StatusResult: Integer;
StatusReached: Boolean;
TimeOutReached: Boolean;
StartTickCount: Cardinal;
const
STATUS_TIMEOUT = 30000;
WAIT_TIMEOUT = 250;
begin
Result := 0;
StatusReached := False;
TimeOutReached := False;
StartTickCount := GetTickCount;
while not StatusReached and not TimeOutReached do
begin
StatusResult := GetServiceStatus(ServiceName, CurrentStatus);
if StatusResult = 0 then
begin
if Status = CurrentStatus then
StatusReached := True
else
Sleep(WAIT_TIMEOUT);
end
else
Result := StatusResult;
if (StartTickCount + STATUS_TIMEOUT) < GetTickCount then
begin
TimeOutReached := True;
Result := ERROR_SERVICE_REQUEST_TIMEOUT;
end;
end;
end;
function ExistsService(ServiceName: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
begin
Result := 0;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_QUERY_CONFIG);
if ServiceHandle > 0 then
CloseServiceHandle(ServiceHandle)
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function StartService(ServiceName: String; ServiceArguments: String): Integer;
type
TArguments = Array of PChar;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
ServiceArgVectors: TArguments;
NumServiceArgs: DWORD;
const
ArgDelimitterQuote: String = '"';
ArgDelimitterWhiteSpace: String = ' ';
procedure GetServiceArguments(ServiceArguments: String; var NumServiceArgs: DWORD; var ServiceArgVectors: TArguments);
var
Param: String;
Split: Boolean;
Quoted: Boolean;
CharIsDelimitter: Boolean;
begin
ServiceArgVectors := nil;
NumServiceArgs := 0;
Quoted := False;
while Length(ServiceArguments) > 0 do
begin
Split := False;
CharIsDelimitter := False;
if ServiceArguments[1] = ' ' then
if not Quoted then
begin
CharIsDelimitter := True;
Split := True;
end;
if ServiceArguments[1] = '"' then
begin
Quoted := not Quoted;
CharIsDelimitter := True;
if not Quoted then
Split := True;
end;
if not CharIsDelimitter then
Param := Param + ServiceArguments[1];
if Split or (Length(ServiceArguments) = 1) then
begin
SetLength(ServiceArgVectors, Length(ServiceArgVectors) + 1);
GetMem(ServiceArgVectors[Length(ServiceArgVectors) -1], Length(Param) + 1);
StrPCopy(ServiceArgVectors[Length(ServiceArgVectors) -1], Param);
Param := '';
Delete(ServiceArguments, 1, 1);
ServiceArguments := Trim(ServiceArguments);
end
else
Delete(ServiceArguments, 1, 1);
end;
if Length(ServiceArgVectors) > 0 then
NumServiceArgs := Length(ServiceArgVectors);
end;
procedure FreeServiceArguments(ServiceArgVectors: TArguments);
var
i: Integer;
begin
if Length(ServiceArgVectors) > 0 then
for i := 0 to Length(ServiceArgVectors) -1 do
FreeMem(ServiceArgVectors[i]);
end;
begin
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_START);
if ServiceHandle > 0 then
begin
GetServiceArguments(ServiceArguments, NumServiceArgs, ServiceArgVectors);
if WinSvc.StartService(ServiceHandle, NumServiceArgs, ServiceArgVectors[0]) then
Result := WaitForStatus(ServiceName, SERVICE_RUNNING)
else
Result := System.GetLastError;
FreeServiceArguments(ServiceArgVectors);
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function StopService(ServiceName: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
ServiceStatus: TServiceStatus;
Dependencies: PEnumServiceStatus;
BytesNeeded: Cardinal;
ServicesReturned: Cardinal;
ServicesEnumerated: Boolean;
EnumerationSuccess: Boolean;
i: Cardinal;
begin
Result := 0;
BytesNeeded := 0;
ServicesReturned := 0;
Dependencies := nil;
ServicesEnumerated := False;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT or SC_MANAGER_ENUMERATE_SERVICE);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_STOP or SERVICE_ENUMERATE_DEPENDENTS);
if ServiceHandle > 0 then
begin
if not EnumDependentServices(ServiceHandle, SERVICE_ACTIVE, Dependencies^, 0, BytesNeeded, ServicesReturned) then
begin
ServicesEnumerated := True;
GetMem(Dependencies, BytesNeeded);
EnumerationSuccess := EnumDependentServices(ServiceHandle, SERVICE_ACTIVE, Dependencies^, BytesNeeded, BytesNeeded, ServicesReturned);
if EnumerationSuccess and (ServicesReturned > 0) then
begin
for i := 1 to ServicesReturned do
begin
Result := StopService(Dependencies.lpServiceName);
if Result <> 0 then
Break;
Inc(Dependencies);
end;
end
else
Result := System.GetLastError;
end;
if (ServicesEnumerated and (Result = 0)) or not ServicesEnumerated then
begin
if ControlService(ServiceHandle, SERVICE_CONTROL_STOP, ServiceStatus) then
Result := WaitForStatus(ServiceName, SERVICE_STOPPED)
else
Result := System.GetLastError
end;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function PauseService(ServiceName: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
ServiceStatus: TServiceStatus;
begin
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_PAUSE_CONTINUE);
if ServiceHandle > 0 then
begin
if ControlService(ServiceHandle, SERVICE_CONTROL_PAUSE, ServiceStatus) then
Result := WaitForStatus(ServiceName, SERVICE_PAUSED)
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function ContinueService(ServiceName: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
ServiceStatus: TServiceStatus;
begin
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_PAUSE_CONTINUE);
if ServiceHandle > 0 then
begin
if ControlService(ServiceHandle, SERVICE_CONTROL_CONTINUE, ServiceStatus) then
Result := WaitForStatus(ServiceName, SERVICE_RUNNING)
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function GetServiceName(DisplayName: String; var Name: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceName: PChar;
ServiceBuffer: Cardinal;
begin
Result := 0;
ServiceBuffer := 255;
ServiceName := StrAlloc(ServiceBuffer+1);
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
if WinSvc.GetServiceKeyName(ManagerHandle, PChar(DisplayName), ServiceName, ServiceBuffer) then
Name := ServiceName
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function GetServiceDisplayName(ServiceName: String; var Name: String): Integer;
var
ManagerHandle: SC_HANDLE;
DisplayName: PChar;
ServiceBuffer: Cardinal;
begin
Result := 0;
ServiceBuffer := 255;
DisplayName := StrAlloc(ServiceBuffer+1);
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
if WinSvc.GetServiceDisplayName(ManagerHandle, PChar(ServiceName), DisplayName, ServiceBuffer) then
Name := DisplayName
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function GetServiceStatus(ServiceName: String; var Status: DWORD): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
ServiceStatus: TServiceStatus;
begin
Result := 0;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_QUERY_STATUS);
if ServiceHandle > 0 then
begin
if QueryServiceStatus(ServiceHandle, ServiceStatus) then
Status := ServiceStatus.dwCurrentState
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function GetServiceBinaryPath(ServiceName: String; var BinaryPath: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
BytesNeeded: DWORD;
ServiceConfig: PQueryServiceConfig;
begin
Result := 0;
ServiceConfig := nil;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_QUERY_CONFIG);
if ServiceHandle > 0 then
begin
if not QueryServiceConfig(ServiceHandle, ServiceConfig, 0, BytesNeeded) and (System.GetLastError = ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(ServiceConfig, BytesNeeded);
if QueryServiceConfig(ServiceHandle, ServiceConfig, BytesNeeded, BytesNeeded) then
BinaryPath := ServiceConfig^.lpBinaryPathName
else
Result := System.GetLastError;
FreeMem(ServiceConfig);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function GetServiceStartType(ServiceName: String; var StartType: DWORD): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
BytesNeeded: DWORD;
ServiceConfig: PQueryServiceConfig;
begin
Result := 0;
ServiceConfig := nil;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_QUERY_CONFIG);
if ServiceHandle > 0 then
begin
if not QueryServiceConfig(ServiceHandle, ServiceConfig, 0, BytesNeeded) and (System.GetLastError = ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(ServiceConfig, BytesNeeded);
if QueryServiceConfig(ServiceHandle, ServiceConfig, BytesNeeded, BytesNeeded) then
StartType := ServiceConfig^.dwStartType
else
Result := System.GetLastError;
FreeMem(ServiceConfig);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function GetServiceDescription(ServiceName: String; var Description: String): Integer;
const
SERVICE_CONFIG_DESCRIPTION = 1;
type
TServiceDescription = record
lpDescription: PAnsiChar;
end;
PServiceDescription = ^TServiceDescription;
var
QueryServiceConfig2: function(hService: SC_HANDLE; dwInfoLevel: DWORD; pBuffer: Pointer; cbBufSize: DWORD; var cbBytesNeeded: Cardinal): BOOL; stdcall;
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
LockHandle: SC_LOCK;
ServiceDescription: PServiceDescription;
BytesNeeded: Cardinal;
begin
Result := 0;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_LOCK);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_QUERY_CONFIG);
if ServiceHandle > 0 then
begin
LockHandle := LockServiceDatabase(ManagerHandle);
if LockHandle <> nil then
begin
@QueryServiceConfig2 := GetProcAddress(GetModuleHandle(advapi32), 'QueryServiceConfig2A');
if Assigned(@QueryServiceConfig2) then
begin
if not QueryServiceConfig2(ServiceHandle, SERVICE_CONFIG_DESCRIPTION, nil, 0, BytesNeeded) and (System.GetLastError = ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(ServiceDescription, BytesNeeded);
if QueryServiceConfig2(ServiceHandle, SERVICE_CONFIG_DESCRIPTION, ServiceDescription, BytesNeeded, BytesNeeded) then
Description := ServiceDescription.lpDescription
else
Result := System.GetLastError;
FreeMem(ServiceDescription);
end
else
Result := System.GetLastError;
end
else
Result := System.GetLastError;
UnlockServiceDatabase(LockHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function GetServiceLogon(ServiceName: String; var Username: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
BytesNeeded: DWORD;
ServiceConfig: PQueryServiceConfig;
begin
Result := 0;
ServiceConfig := nil;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_CONNECT);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_QUERY_CONFIG);
if ServiceHandle > 0 then
begin
if not QueryServiceConfig(ServiceHandle, ServiceConfig, 0, BytesNeeded) and (System.GetLastError = ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(ServiceConfig, BytesNeeded);
if QueryServiceConfig(ServiceHandle, ServiceConfig, BytesNeeded, BytesNeeded) then
Username := ServiceConfig^.lpServiceStartName
else
Result := System.GetLastError;
FreeMem(ServiceConfig);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function SetServiceDescription(ServiceName: String; Description: String): Integer;
const
SERVICE_CONFIG_DESCRIPTION = 1;
var
ChangeServiceConfig2: function(hService: SC_HANDLE; dwInfoLevel: DWORD; lpInfo: Pointer): BOOL; stdcall;
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
LockHandle: SC_LOCK;
begin
Result := 0;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_LOCK);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_CHANGE_CONFIG);
if ServiceHandle > 0 then
begin
LockHandle := LockServiceDatabase(ManagerHandle);
if LockHandle <> nil then
begin
@ChangeServiceConfig2 := GetProcAddress(GetModuleHandle(advapi32), 'ChangeServiceConfig2A');
if Assigned(@ChangeServiceConfig2) then
begin
if not ChangeServiceConfig2(ServiceHandle, SERVICE_CONFIG_DESCRIPTION, @Description) then
Result := System.GetLastError;
end
else
Result := System.GetLastError;
UnlockServiceDatabase(LockHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function SetServiceStartType(ServiceName: String; StartType: DWORD): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
LockHandle: SC_LOCK;
begin
Result := 0;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_LOCK);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_CHANGE_CONFIG);
if ServiceHandle > 0 then
begin
LockHandle := LockServiceDatabase(ManagerHandle);
if LockHandle <> nil then
begin
if not ChangeServiceConfig(ServiceHandle, SERVICE_NO_CHANGE, StartType, SERVICE_NO_CHANGE, nil, nil, nil, nil, nil, nil, nil) then
Result := System.GetLastError;
UnlockServiceDatabase(LockHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function SetServiceLogon(ServiceName: String; Username: String; Password: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
LockHandle: SC_LOCK;
begin
Result := 0;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_LOCK);
if Pos('\', Username) = 0 then
Username := '.\' + Username;
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_CHANGE_CONFIG);
if ServiceHandle > 0 then
begin
LockHandle := LockServiceDatabase(ManagerHandle);
if LockHandle <> nil then
begin
if not ChangeServiceConfig(ServiceHandle, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, nil, nil, nil, nil, PChar(Username), PChar(Password), nil) then
Result := System.GetLastError;
UnlockServiceDatabase(LockHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function SetServiceBinaryPath(ServiceName: String; BinaryPath: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
LockHandle: SC_LOCK;
begin
Result := 0;
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_LOCK);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_CHANGE_CONFIG);
if ServiceHandle > 0 then
begin
LockHandle := LockServiceDatabase(ManagerHandle);
if LockHandle <> nil then
begin
if not ChangeServiceConfig(ServiceHandle, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, PChar(BinaryPath), nil, nil, nil, nil, nil, nil) then
Result := System.GetLastError;
UnlockServiceDatabase(LockHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function ServiceIsRunning(ServiceName: String; var IsRunning: Boolean): Integer;
var
Status: DWORD;
begin
Result := GetServiceStatus(ServiceName, Status);
if Result = 0 then
IsRunning := Status = SERVICE_RUNNING
else
IsRunning := False;
end;
function ServiceIsStopped(ServiceName: String; var IsStopped: Boolean): Integer;
var
Status: DWORD;
begin
Result := GetServiceStatus(ServiceName, Status);
if Result = 0 then
IsStopped := Status = SERVICE_STOPPED
else
IsStopped := False;
end;
function ServiceIsPaused(ServiceName: String; var IsPaused: Boolean): Integer;
var
Status: DWORD;
begin
Result := GetServiceStatus(ServiceName, Status);
if Result = 0 then
IsPaused := Status = SERVICE_PAUSED
else
IsPaused := False;
end;
function RestartService(ServiceName: String; ServiceArguments: String): Integer;
begin
Result := StopService(ServiceName);
if Result = 0 then
Result := StartService(ServiceName, ServiceArguments);
end;
function InstallService(ServiceName, DisplayName: String; ServiceType: DWORD;
StartType: DWORD; BinaryPathName: String; Dependencies: String;
Username: String; Password: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
PDependencies: PChar;
PUsername: PChar;
PPassword: PChar;
const
ReplaceDelimitter: String = '/';
function Replace(Value: String): String;
begin
while Pos(ReplaceDelimitter, Value) <> 0 do
begin
Result := Result + Copy(Value, 1, Pos(ReplaceDelimitter, Value) -1) + Chr(0);
Delete(Value, 1, Pos(ReplaceDelimitter, Value));
end;
Result := Result + Value + Chr(0) + Chr(0);
end;
begin
Result := 0;
if Dependencies = '' then
PDependencies := nil
else
PDependencies := PChar(Replace(Dependencies));
if UserName = '' then
PUsername := nil
else
PUsername := PChar(Username);
if Password = '' then
PPassword := nil
else
PPassword := PChar(Password);
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_ALL_ACCESS);
if ManagerHandle > 0 then
begin
ServiceHandle := CreateService(ManagerHandle,
PChar(ServiceName),
PChar(DisplayName),
SERVICE_START or SERVICE_QUERY_STATUS or _DELETE,
ServiceType,
StartType,
SERVICE_ERROR_NORMAL,
PChar(BinaryPathName),
nil,
nil,
PDependencies,
PUsername,
PPassword);
if ServiceHandle <> 0 then
CloseServiceHandle(ServiceHandle)
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
function RemoveService(ServiceName: String): Integer;
var
ManagerHandle: SC_HANDLE;
ServiceHandle: SC_HANDLE;
LockHandle: SC_LOCK;
IsStopped: Boolean;
Deleted: Boolean;
begin
IsStopped := False;
Result := ServiceIsStopped(ServiceName, IsStopped);
if Result = 0 then
if not IsStopped then
Result := StopService(ServiceName);
if Result = 0 then
begin
ManagerHandle := OpenSCManager('', nil, SC_MANAGER_ALL_ACCESS);
if ManagerHandle > 0 then
begin
ServiceHandle := OpenService(ManagerHandle, PChar(ServiceName), SERVICE_ALL_ACCESS);
if ServiceHandle > 0 then
begin
LockHandle := LockServiceDatabase(ManagerHandle);
if LockHandle <> nil then
begin
Deleted := DeleteService(ServiceHandle);
if not Deleted then
Result := System.GetLastError;
UnlockServiceDatabase(LockHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ServiceHandle);
end
else
Result := System.GetLastError;
CloseServiceHandle(ManagerHandle);
end
else
Result := System.GetLastError;
end;
end;
function GetErrorMessage(ErrorCode: Integer): String;
begin
Result := SysErrorMessage(ErrorCode);
end;
end.

35
build/Source/SimpleFC.cfg Normal file
View file

@ -0,0 +1,35 @@
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O-
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-LE"c:\programme\borland\delphi6\Projects\Bpl"
-LN"c:\programme\borland\delphi6\Projects\Bpl"

90
build/Source/SimpleFC.dof Normal file
View file

@ -0,0 +1,90 @@
[FileVersion]
Version=6.0
[Compiler]
A=8
B=0
C=1
D=1
E=0
F=0
G=1
H=1
I=1
J=0
K=0
L=1
M=0
N=1
O=0
P=1
Q=0
R=0
S=0
T=0
U=0
V=1
W=0
X=1
Y=1
Z=1
ShowHints=1
ShowWarnings=1
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[Linker]
MapFile=0
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories]
OutputDir=
UnitOutputDir=
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=
Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;dclOffice2k;soaprtl;Jcl;VirtualTreesD6;VirtualShellToolsD6;VirtualExplorerListviewExD6;ThemeManagerD6;JclVcl;JvCoreD6R;JvSystemD6R;JvStdCtrlsD6R;JvAppFrmD6R;JvBandsD6R;JvDBD6R;JvDlgsD6R;JvBDED6R;JvCmpD6R;JvCryptD6R;JvCtrlsD6R;JvCustomD6R;JvDockingD6R;JvDotNetCtrlsD6R;JvEDID6R;JvGlobusD6R;JvHMID6R;JvInterpreterD6R;JvJansD6R;JvManagedThreadsD6R;JvMMD6R;JvNetD6R;JvPageCompsD6R;JvPluginD6R;JvPrintPreviewD6R;JvRuntimeDesignD6R;JvTimeFrameworkD6R;JvUIBD6R;JvValidatorsD6R;JvWizardD6R;JvXPCtrlsD6R;FModPackage;NetBrowserPackage;ThreadCopyPackage;TMSMenusD6;DSPack_D6;SNTPServer
Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=
HostApplication=
Launcher=
UseLauncher=0
DebugCWD=
[Language]
ActiveLang=
ProjectLang=
RootDir=
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1031
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlUnitAliases]
Count=1
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

629
build/Source/SimpleFC.dpr Normal file
View file

@ -0,0 +1,629 @@
library SimpleFC;
uses
NSIS, Windows, FirewallControl, SysUtils;
function ResultToStr(Value: Boolean): String;
begin
if Value then
result := '0'
else
result := '1';
end;
function BoolToStr(Value: Boolean): String;
begin
if Value then
result := '1'
else
result := '0';
end;
function StrToBool(Value: String): Boolean;
begin
if Value = '1' then
result := True
else
result := False;
end;
procedure AddPort(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Port: Integer;
Name: String;
Protocol: NET_FW_IP_PROTOCOL;
Scope: NET_FW_SCOPE;
Enabled: Boolean;
IpVersion: NET_FW_IP_VERSION;
RemoteAddresses: String;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Port := StrToInt(PopString);
Name := PopString;
Protocol := NET_FW_IP_PROTOCOL(StrToInt(PopString));
Scope := NET_FW_SCOPE(StrToInt(PopString));
IpVersion := NET_FW_IP_VERSION(StrToInt(PopString));
RemoteAddresses := PopString;
Enabled := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AddPort(Port,
Name,
Protocol,
Scope,
IpVersion,
RemoteAddresses,
Enabled) = 0);
PushString(FirewallResult);
end;
procedure RemovePort(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Port: Integer;
Protocol: NET_FW_IP_PROTOCOL;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Port := StrToInt(PopString);
Protocol := NET_FW_IP_PROTOCOL(StrToInt(PopString));
FirewallResult := ResultToStr(FirewallControl.RemovePort(Port, Protocol) = 0);
PushString(FirewallResult);
end;
procedure AddApplication(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Name: String;
BinaryPath: String;
IpVersion: NET_FW_IP_VERSION;
Scope: NET_FW_SCOPE;
RemoteAdresses: String;
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Name := PopString;
BinaryPath := PopString;
Scope := NET_FW_SCOPE(StrToInt(PopString));
IpVersion := NET_FW_IP_VERSION(StrToInt(PopString));
RemoteAdresses := PopString;
Enabled := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AddApplication(Name,
BinaryPath,
Scope,
IpVersion,
RemoteAdresses,
Enabled) = 0);
PushString(FirewallResult);
end;
procedure RemoveApplication(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
BinaryPath: String;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
BinaryPath := PopString;
FirewallResult := ResultToStr(FirewallControl.RemoveApplication(BinaryPath) = 0);
PushString(FirewallResult);
end;
procedure IsPortAdded(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Port: Integer;
Protocol: NET_FW_IP_PROTOCOL;
Added: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Port := StrToInt(PopString);
Protocol := NET_FW_IP_PROTOCOL(StrToInt(PopString));
FirewallResult := ResultToStr(FirewallControl.IsPortAdded(Port, Protocol, Added) = 0);
PushString(BoolToStr(Added));
PushString(FirewallResult);
end;
procedure IsApplicationAdded(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
BinaryPath: String;
Added: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
BinaryPath := PopString;
FirewallResult := ResultToStr(FirewallControl.IsApplicationAdded(BinaryPath, Added) = 0);
PushString(BoolToStr(Added));
PushString(FirewallResult);
end;
procedure IsPortEnabled(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Port: Integer;
Protocol: NET_FW_IP_PROTOCOL;
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Port := StrToInt(PopString);
Protocol := NET_FW_IP_PROTOCOL(StrToInt(PopString));
FirewallResult := ResultToStr(FirewallControl.IsPortEnabled(Port, Protocol, Enabled) = 0);
PushString(BoolToStr(Enabled));
PushString(FirewallResult);
end;
procedure IsApplicationEnabled(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
BinaryPath: String;
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
BinaryPath := PopString;
FirewallResult := ResultToStr(FirewallControl.IsApplicationEnabled(BinaryPath, Enabled) = 0);
PushString(BoolToStr(Enabled));
PushString(FirewallResult);
end;
procedure EnableDisablePort(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Port: Integer;
Protocol: NET_FW_IP_PROTOCOL;
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Port := StrToInt(PopString);
Protocol := NET_FW_IP_PROTOCOL(StrToInt(PopString));
Enabled := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.EnableDisablePort(Port, Protocol, Enabled) = 0);
PushString(FirewallResult);
end;
procedure EnableDisableApplication(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
BinaryPath: String;
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
BinaryPath := PopString;
Enabled := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.EnableDisableApplication(BinaryPath, Enabled) = 0);
PushString(FirewallResult);
end;
procedure IsFirewallEnabled(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
FirewallResult := ResultToStr(FirewallControl.IsFirewallEnabled(Enabled) = 0);
PushString(BoolToStr(Enabled));
PushString(FirewallResult);
end;
procedure EnableDisableFirewall(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Enabled := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.EnableDisableFirewall(Enabled) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowExceptionsNotAllowed(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
NotAllowed: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
NotAllowed := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowExceptionsNotAllowed(NotAllowed) = 0);
PushString(FirewallResult);
end;
procedure AreExceptionsNotAllowed(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
NotAllowed: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
FirewallResult := ResultToStr(FirewallControl.AreExceptionsNotAllowed(NotAllowed) = 0);
PushString(BoolToStr(NotAllowed));
PushString(FirewallResult);
end;
procedure EnableDisableNotifications(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Enabled := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.EnableDisableNotifications(Enabled) = 0);
PushString(BoolToStr(Enabled));
PushString(FirewallResult);
end;
procedure AreNotificationsEnabled(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
FirewallResult := ResultToStr(FirewallControl.AreNotificationsEnabled(Enabled) = 0);
PushString(BoolToStr(Enabled));
PushString(FirewallResult);
end;
procedure StartStopFirewallService(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Enabled: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Enabled := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.StartStopFirewallService(Enabled));
PushString(FirewallResult);
end;
procedure IsFirewallServiceRunning(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
IsRunning: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
FirewallResult := ResultToStr(FirewallControl.IsFirewallServiceRunning(IsRunning));
PushString(BoolToStr(IsRunning));
PushString(FirewallResult);
end;
procedure RestoreDefaults(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
FirewallResult := ResultToStr(FirewallControl.RestoreDefaults = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpOutboundDestinationUnreachable(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpOutboundDestinationUnreachable(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpRedirect(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpRedirect(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpInboundEchoRequest(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpInboundEchoRequest(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpOutboundTimeExceeded(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpOutboundTimeExceeded(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpOutboundParameterProblem(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpOutboundParameterProblem(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpOutboundSourceQuench(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpOutboundSourceQuench(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpInboundRouterRequest(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpInboundRouterRequest(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpInboundTimestampRequest(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpInboundTimestampRequest(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpInboundMaskRequest(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpInboundMaskRequest(Allow) = 0);
PushString(FirewallResult);
end;
procedure AllowDisallowIcmpOutboundPacketTooBig(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Allow: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Allow := StrToBool(PopString);
FirewallResult := ResultToStr(FirewallControl.AllowDisallowIcmpOutboundPacketTooBig(Allow) = 0);
PushString(FirewallResult);
end;
procedure IsIcmpTypeAllowed(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
IpVersion: NET_FW_IP_VERSION;
LocalAddress: String;
IcmpType: NET_FW_ICMP_TYPE;
Allowed: Boolean;
Restricted: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
IpVersion := NET_FW_IP_VERSION(StrToInt(PopString));
LocalAddress := PopString;
IcmpType := NET_FW_ICMP_TYPE(StrToInt(PopString));
FirewallResult := ResultToStr(FirewallControl.IsIcmpTypeAllowed(IpVersion,
LocalAddress,
IcmpType,
Allowed,
Restricted) = 0);
PushString(BoolToStr(Allowed));
PushString(BoolToStr(Restricted));
PushString(FirewallResult);
end;
procedure AdvAddRule(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Name: String;
Description: String;
Protocol: NET_FW_IP_PROTOCOL;
IcmpTypesAndCodes: String;
ApplicationName: String;
ServiceName: String;
Direction: NET_FW_RULE_DIRECTION;
Enabled: Boolean;
Group: String;
Profile: NET_FW_PROFILE_TYPE2;
Action: NET_FW_ACTION;
LocalPorts: String;
RemotePorts: String;
LocalAddress: String;
RemoteAddress: String;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Name := PopString;
Description := PopString;
Protocol := NET_FW_IP_PROTOCOL(StrToInt(PopString));
Direction := NET_FW_RULE_DIRECTION(StrToInt(PopString));
Enabled := StrToBool(PopString);
Profile := NET_FW_PROFILE_TYPE2(StrToInt(PopString));
Action := NET_FW_ACTION(StrToInt(PopString));
ApplicationName := PopString;
ServiceName := PopString;
IcmpTypesAndCodes := PopString;
Group := PopString;
LocalPorts := PopString;
RemotePorts := PopString;
LocalAddress := PopString;
RemoteAddress := PopString;
FirewallResult := ResultToStr(FirewallControl.AdvAddRule(Name,
Description,
Protocol,
Direction,
Enabled,
Profile,
Action,
ApplicationName,
ServiceName,
IcmpTypesAndCodes,
Group,
LocalPorts,
RemotePorts,
LocalAddress,
RemoteAddress) = 0);
PushString(FirewallResult);
end;
procedure AdvRemoveRule(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Name: String;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Name := PopString;
FirewallResult := ResultToStr(FirewallControl.AdvRemoveRule(Name) = 0);
PushString(FirewallResult);
end;
procedure AdvExistsRule(const hwndParent: HWND; const string_size: integer;
const variables: PChar; const stacktop: pointer); cdecl;
var
Name: String;
Exists: Boolean;
FirewallResult: String;
begin
Init(hwndParent, string_size, variables, stacktop);
Name := PopString;
FirewallResult := ResultToStr(FirewallControl.AdvExistsRule(Name, Exists) = 0);
PushString(BoolToStr(Exists));
PushString(FirewallResult);
end;
exports AddPort;
exports RemovePort;
exports AddApplication;
exports RemoveApplication;
exports IsPortAdded;
exports IsApplicationAdded;
exports IsPortEnabled;
exports IsApplicationEnabled;
exports EnableDisablePort;
exports EnableDisableApplication;
exports IsFirewallEnabled;
exports EnableDisableFirewall;
exports AllowDisallowExceptionsNotAllowed;
exports AreExceptionsNotAllowed;
exports EnableDisableNotifications;
exports AreNotificationsEnabled;
exports StartStopFirewallService;
exports IsFirewallServiceRunning;
exports RestoreDefaults;
exports AllowDisallowIcmpOutboundDestinationUnreachable;
exports AllowDisallowIcmpRedirect;
exports AllowDisallowIcmpInboundEchoRequest;
exports AllowDisallowIcmpOutboundTimeExceeded;
exports AllowDisallowIcmpOutboundParameterProblem;
exports AllowDisallowIcmpOutboundSourceQuench;
exports AllowDisallowIcmpInboundRouterRequest;
exports AllowDisallowIcmpInboundTimestampRequest;
exports AllowDisallowIcmpInboundMaskRequest;
exports AllowDisallowIcmpOutboundPacketTooBig;
exports IsIcmpTypeAllowed;
exports AdvAddRule;
exports AdvRemoveRule;
exports AdvExistsRule;
end.