|
@@ -0,0 +1,103 @@
|
|
|
+MODULE ADVAPI32;
|
|
|
+ IMPORT SYSTEM, Kernel32, Modules, KernelLog;
|
|
|
+CONST
|
|
|
+ HKEYClassesRoot* = LONGINT(80000000H);
|
|
|
+ HKEYCurrentUser* = LONGINT(80000001H);
|
|
|
+ RegNone* = 0;
|
|
|
+ RegSZ* = 1;
|
|
|
+ KeyQueryValue* = 0;
|
|
|
+ KeySetValue* = 1;
|
|
|
+ KeyCreateSubKey* = 2;
|
|
|
+ KeyEnumerateSubKeys* = 3;
|
|
|
+ KeyAllAccess* = {19, 18, 17, 16, 5, 4, 3, 2, 1, 0};
|
|
|
+ RegOptionNonVolatile* = {};
|
|
|
+ Success* = 0;
|
|
|
+ ErrorMoreData* = 234;
|
|
|
+ SC_MANAGER_CREATE_SERVICE* = 2;
|
|
|
+ SC_MANAGER_ALL_ACCESS* = 983103;
|
|
|
+ SERVICE_ALL_ACCESS* = 983551;
|
|
|
+ SERVICE_WIN32_OWN_PROCESS* = 16;
|
|
|
+ SERVICE_AUTO_START* = 2;
|
|
|
+ SERVICE_ERROR_NORMAL* = 1;
|
|
|
+ SERVICE_WIN32* = 48;
|
|
|
+ SERVICE_START_PENDING* = 2;
|
|
|
+ SERVICE_ACCEPT_STOP* = 1;
|
|
|
+ SERVICE_ACCEPT_SHUTDOWN* = 4;
|
|
|
+ SERVICE_RUNNING* = 4;
|
|
|
+ SERVICE_CONTROL_STOP* = 1;
|
|
|
+ SERVICE_CONTROL_SHUTDOWN* = 5;
|
|
|
+ SERVICE_STOPPED* = 1;
|
|
|
+TYPE
|
|
|
+ HKEY* = ADDRESS;
|
|
|
+
|
|
|
+ LPSTR* = ADDRESS;
|
|
|
+
|
|
|
+ LPCSTR* = ARRAY OF CHAR;
|
|
|
+
|
|
|
+ HWND* = Kernel32.HANDLE;
|
|
|
+
|
|
|
+ HINSTANCE* = Kernel32.HINSTANCE;
|
|
|
+
|
|
|
+ INT* = LONGINT;
|
|
|
+
|
|
|
+ LPCTSTR* = LPCSTR;
|
|
|
+
|
|
|
+ SC_HANDLE* = Kernel32.HANDLE;
|
|
|
+
|
|
|
+ DWORD* = LONGINT;
|
|
|
+
|
|
|
+ LPDWORD* = ADDRESS;
|
|
|
+
|
|
|
+ BOOL* = Kernel32.BOOL;
|
|
|
+
|
|
|
+ LPSERVICE_MAIN_FUNCTIONA = PROCEDURE {WINAPI}(dwNumServicesArgs: DWORD; VAR lpServiceArgVectors: ARRAY OF CHAR):BOOL;
|
|
|
+
|
|
|
+ LPSERVICE_MAIN_FUNCTION* = LPSERVICE_MAIN_FUNCTIONA;
|
|
|
+
|
|
|
+ SERVICE_TABLE_ENTRYA = RECORD
|
|
|
+ lpServiceName*: LPSTR;
|
|
|
+ lpServiceProc*: LPSERVICE_MAIN_FUNCTIONA;
|
|
|
+ END;
|
|
|
+
|
|
|
+ SERVICE_TABLE_ENTRY* = SERVICE_TABLE_ENTRYA;
|
|
|
+
|
|
|
+ LPHANDLER_FUNCTION* = PROCEDURE {WINAPI}(dwControl: DWORD);
|
|
|
+
|
|
|
+ SERVICE_STATUS_HANDLE* = Kernel32.HANDLE;
|
|
|
+
|
|
|
+ SERVICE_STATUS* = RECORD
|
|
|
+ dwServiceType*, dwCurrentState*, dwControlsAccepted*, dwWin32ExitCode*, dwServiceSpecificExitCode*, dwCheckPoint*, dwWaitHint*: DWORD;
|
|
|
+ END;
|
|
|
+VAR
|
|
|
+ GetUserName-: PROCEDURE {WINAPI}(VAR lpBuffer: ARRAY OF CHAR; VAR nSize: LONGINT):Kernel32.BOOL;
|
|
|
+ RegCloseKey-: PROCEDURE {WINAPI}(hKey: HKEY):LONGINT;
|
|
|
+ RegCreateKeyEx-: PROCEDURE {WINAPI}(hKey: HKEY; lpSubKey: ARRAY OF CHAR; Reserved: LONGINT; lpClass: ARRAY OF CHAR; dwOptions, samDesired: SET; lpSecurityAttributes: ANY; VAR phkResult: HKEY; VAR lpdwDisposition: LONGINT):LONGINT;
|
|
|
+ RegDeleteKey-: PROCEDURE {WINAPI}(hKey: HKEY; lpSubKey: ARRAY OF CHAR):LONGINT;
|
|
|
+ RegDeleteValue-: PROCEDURE {WINAPI}(hKey: HKEY; lpValueName: ARRAY OF CHAR):LONGINT;
|
|
|
+ RegEnumKeyEx-: PROCEDURE {WINAPI}(hKey: HKEY; dwIndex: LONGINT; VAR lpName: ARRAY OF CHAR; VAR lpcbName: LONGINT; VAR lpReserved: LONGINT; VAR lpClass: ARRAY OF CHAR; VAR lpcbClass: LONGINT; VAR lpftLastWriteTime: Kernel32.FileTime):LONGINT;
|
|
|
+ RegEnumValue-: PROCEDURE {WINAPI}(hKey: HKEY; dwIndex: LONGINT; VAR lpValueName: ARRAY OF CHAR; VAR lpcbValueName: LONGINT; VAR lpReserved, type: LONGINT; VAR lpData: ARRAY OF SYSTEM.BYTE; VAR lpcbData: LONGINT):LONGINT;
|
|
|
+ RegOpenKeyEx-: PROCEDURE {WINAPI}(hKey: HKEY; lpSubKey: ARRAY OF CHAR; ulOptions: LONGINT; samDesired: SET; VAR phkResult: HKEY):LONGINT;
|
|
|
+ RegQueryValueEx-: PROCEDURE {WINAPI}(hKey: HKEY; lpValueName: ARRAY OF CHAR; VAR lpReserved, lpType: LONGINT; VAR lpData: ARRAY OF SYSTEM.BYTE; VAR lpcbData: LONGINT):LONGINT;
|
|
|
+ RegSetValueEx-: PROCEDURE {WINAPI}(hKey: HKEY; lpValueName: ARRAY OF CHAR; Reserved, dwType: LONGINT; VAR lpData: ARRAY OF SYSTEM.BYTE; cbData: LONGINT):LONGINT;
|
|
|
+ GetFileVersionInfo-: PROCEDURE {WINAPI}(lpstrFilename: ARRAY OF CHAR; dwHandle, dwLen: LONGINT; VAR lpDate: ARRAY OF SYSTEM.BYTE):Kernel32.BOOL;
|
|
|
+ GetFileVersionInfoSize-: PROCEDURE {WINAPI}(lpstrFilename: ARRAY OF CHAR; VAR lpdwHandle: LONGINT):LONGINT;
|
|
|
+ VerQueryValue-: PROCEDURE {WINAPI}(pBlock: ARRAY OF SYSTEM.BYTE; lpSubBlock: ARRAY OF CHAR; VAR lplpBuffer: ADDRESS; VAR puLen: LONGINT):Kernel32.BOOL;
|
|
|
+ CloseServiceHandle-: PROCEDURE {WINAPI}(hSCObject: SC_HANDLE):BOOL;
|
|
|
+ CreateService-: PROCEDURE {WINAPI}(hSCManager: SC_HANDLE; VAR lpServiceName, lpDisplayName: LPCTSTR; dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD; VAR lpBinaryPathName, lpLoadOrderGroup: LPCTSTR; lpdwTagId: LPDWORD; VAR lpDependencies, lpServiceStartName, lpPassword: LPCTSTR):SC_HANDLE;
|
|
|
+ DeleteService-: PROCEDURE {WINAPI}(hService: SC_HANDLE):BOOL;
|
|
|
+ OpenSCManager-: PROCEDURE {WINAPI}(VAR lpMachineName, lpDatabaseName: LPCTSTR; dwDesiredAccess: DWORD):SC_HANDLE;
|
|
|
+ OpenService-: PROCEDURE {WINAPI}(hSCManager: SC_HANDLE; VAR lpServiceName: LPCTSTR; dwDesiredAccess: DWORD):SC_HANDLE;
|
|
|
+ RegisterServiceCtrlHandler-: PROCEDURE {WINAPI}(VAR lpServiceName: ARRAY OF CHAR; lpHandlerProc: LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE;
|
|
|
+ SetServiceStatus-: PROCEDURE {WINAPI}(hServiceStatus: SERVICE_STATUS_HANDLE; VAR lpServiceStatus: SERVICE_STATUS):BOOL;
|
|
|
+ StartService-: PROCEDURE {WINAPI}(hService: SC_HANDLE; dwNumServiceArgs: DWORD; VAR lpServiceArgVectors: LPCTSTR):BOOL;
|
|
|
+ StartServiceCtrlDispatcher-: PROCEDURE {WINAPI}(VAR lpServiceTable: ARRAY OF SYSTEM.BYTE):BOOL;
|
|
|
+ advapi32: Kernel32.HMODULE;
|
|
|
+
|
|
|
+ PROCEDURE ^ InstallService*(srvName, serviceDesc, exeFile: ARRAY OF CHAR): BOOLEAN;
|
|
|
+ PROCEDURE ^ UninstallService*(srvName: ARRAY OF CHAR): BOOLEAN;
|
|
|
+ PROCEDURE ^ OutError*(funcName: ARRAY OF CHAR): LONGINT;
|
|
|
+ PROCEDURE ^ TermMod;
|
|
|
+ PROCEDURE ^ GetProcAddress(hModule: ADDRESS; VAR adr: ADDRESS; procName: ARRAY OF CHAR);
|
|
|
+ PROCEDURE ^ Init;
|
|
|
+BEGIN
|
|
|
+END ADVAPI32.
|