📄 winsvc.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Services interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: winsvc.h, released June 2000. }
{ The original Pascal code is: WinSvc.pas, released December 2000 }
{ The initial developer of the Pascal code is Marcel van Brakel }
{ (brakelm@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999 Marcel van Brakel. }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ The contents of this file are used with permission, subject to }
{ the Mozilla Public License Version 1.1 (the "License"); you may }
{ not use this file except in compliance with the License. You may }
{ obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ 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. }
{ }
{******************************************************************}
unit WinSvc;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "WinSvc.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
WinNT, WinType;
//
// Service database names
//
const
SERVICES_ACTIVE_DATABASEW = 'ServicesActive';
{$EXTERNALSYM SERVICES_ACTIVE_DATABASEW}
SERVICES_FAILED_DATABASEW = 'ServicesFailed';
{$EXTERNALSYM SERVICES_FAILED_DATABASEW}
SERVICES_ACTIVE_DATABASEA = 'ServicesActive';
{$EXTERNALSYM SERVICES_ACTIVE_DATABASEA}
SERVICES_FAILED_DATABASEA = 'ServicesFailed';
{$EXTERNALSYM SERVICES_FAILED_DATABASEA}
//
// Character to designate that a name is a group
//
SC_GROUP_IDENTIFIERW = '+';
{$EXTERNALSYM SC_GROUP_IDENTIFIERW}
SC_GROUP_IDENTIFIERA = '+';
{$EXTERNALSYM SC_GROUP_IDENTIFIERA}
{$IFDEF UNICODE}
SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEW;
{$EXTERNALSYM SERVICES_ACTIVE_DATABASE}
SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEW;
{$EXTERNALSYM SERVICES_FAILED_DATABASE}
SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERW;
{$EXTERNALSYM SC_GROUP_IDENTIFIER}
{$ELSE}
SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
{$EXTERNALSYM SERVICES_ACTIVE_DATABASE}
SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
{$EXTERNALSYM SERVICES_FAILED_DATABASE}
SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
{$EXTERNALSYM SC_GROUP_IDENTIFIER}
{$ENDIF}
//
// Value to indicate no change to an optional parameter
//
SERVICE_NO_CHANGE = $ffffffff;
{$EXTERNALSYM SERVICE_NO_CHANGE}
//
// Service State -- for Enum Requests (Bit Mask)
//
SERVICE_ACTIVE = $00000001;
{$EXTERNALSYM SERVICE_ACTIVE}
SERVICE_INACTIVE = $00000002;
{$EXTERNALSYM SERVICE_INACTIVE}
SERVICE_STATE_ALL = SERVICE_ACTIVE or SERVICE_INACTIVE;
{$EXTERNALSYM SERVICE_STATE_ALL}
//
// Controls
//
SERVICE_CONTROL_STOP = $00000001;
{$EXTERNALSYM SERVICE_CONTROL_STOP}
SERVICE_CONTROL_PAUSE = $00000002;
{$EXTERNALSYM SERVICE_CONTROL_PAUSE}
SERVICE_CONTROL_CONTINUE = $00000003;
{$EXTERNALSYM SERVICE_CONTROL_CONTINUE}
SERVICE_CONTROL_INTERROGATE = $00000004;
{$EXTERNALSYM SERVICE_CONTROL_INTERROGATE}
SERVICE_CONTROL_SHUTDOWN = $00000005;
{$EXTERNALSYM SERVICE_CONTROL_SHUTDOWN}
SERVICE_CONTROL_PARAMCHANGE = $00000006;
{$EXTERNALSYM SERVICE_CONTROL_PARAMCHANGE}
SERVICE_CONTROL_NETBINDADD = $00000007;
{$EXTERNALSYM SERVICE_CONTROL_NETBINDADD}
SERVICE_CONTROL_NETBINDREMOVE = $00000008;
{$EXTERNALSYM SERVICE_CONTROL_NETBINDREMOVE}
SERVICE_CONTROL_NETBINDENABLE = $00000009;
{$EXTERNALSYM SERVICE_CONTROL_NETBINDENABLE}
SERVICE_CONTROL_NETBINDDISABLE = $0000000A;
{$EXTERNALSYM SERVICE_CONTROL_NETBINDDISABLE}
SERVICE_CONTROL_DEVICEEVENT = $0000000B;
{$EXTERNALSYM SERVICE_CONTROL_DEVICEEVENT}
SERVICE_CONTROL_HARDWAREPROFILECHANGE = $0000000C;
{$EXTERNALSYM SERVICE_CONTROL_HARDWAREPROFILECHANGE}
SERVICE_CONTROL_POWEREVENT = $0000000D;
{$EXTERNALSYM SERVICE_CONTROL_POWEREVENT}
//
// Service State -- for CurrentState
//
SERVICE_STOPPED = $00000001;
{$EXTERNALSYM SERVICE_STOPPED}
SERVICE_START_PENDING = $00000002;
{$EXTERNALSYM SERVICE_START_PENDING}
SERVICE_STOP_PENDING = $00000003;
{$EXTERNALSYM SERVICE_STOP_PENDING}
SERVICE_RUNNING = $00000004;
{$EXTERNALSYM SERVICE_RUNNING}
SERVICE_CONTINUE_PENDING = $00000005;
{$EXTERNALSYM SERVICE_CONTINUE_PENDING}
SERVICE_PAUSE_PENDING = $00000006;
{$EXTERNALSYM SERVICE_PAUSE_PENDING}
SERVICE_PAUSED = $00000007;
{$EXTERNALSYM SERVICE_PAUSED}
//
// Controls Accepted (Bit Mask)
//
SERVICE_ACCEPT_STOP = $00000001;
{$EXTERNALSYM SERVICE_ACCEPT_STOP}
SERVICE_ACCEPT_PAUSE_CONTINUE = $00000002;
{$EXTERNALSYM SERVICE_ACCEPT_PAUSE_CONTINUE}
SERVICE_ACCEPT_SHUTDOWN = $00000004;
{$EXTERNALSYM SERVICE_ACCEPT_SHUTDOWN}
SERVICE_ACCEPT_PARAMCHANGE = $00000008;
{$EXTERNALSYM SERVICE_ACCEPT_PARAMCHANGE}
SERVICE_ACCEPT_NETBINDCHANGE = $00000010;
{$EXTERNALSYM SERVICE_ACCEPT_NETBINDCHANGE}
SERVICE_ACCEPT_HARDWAREPROFILECHANGE = $00000020;
{$EXTERNALSYM SERVICE_ACCEPT_HARDWAREPROFILECHANGE}
SERVICE_ACCEPT_POWEREVENT = $00000040;
{$EXTERNALSYM SERVICE_ACCEPT_POWEREVENT}
//
// Service Control Manager object specific access types
//
SC_MANAGER_CONNECT = $0001;
{$EXTERNALSYM SC_MANAGER_CONNECT}
SC_MANAGER_CREATE_SERVICE = $0002;
{$EXTERNALSYM SC_MANAGER_CREATE_SERVICE}
SC_MANAGER_ENUMERATE_SERVICE = $0004;
{$EXTERNALSYM SC_MANAGER_ENUMERATE_SERVICE}
SC_MANAGER_LOCK = $0008;
{$EXTERNALSYM SC_MANAGER_LOCK}
SC_MANAGER_QUERY_LOCK_STATUS = $0010;
{$EXTERNALSYM SC_MANAGER_QUERY_LOCK_STATUS}
SC_MANAGER_MODIFY_BOOT_CONFIG = $0020;
{$EXTERNALSYM SC_MANAGER_MODIFY_BOOT_CONFIG}
SC_MANAGER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or
SC_MANAGER_CONNECT or
SC_MANAGER_CREATE_SERVICE or
SC_MANAGER_ENUMERATE_SERVICE or
SC_MANAGER_LOCK or
SC_MANAGER_QUERY_LOCK_STATUS or
SC_MANAGER_MODIFY_BOOT_CONFIG;
{$EXTERNALSYM SC_MANAGER_ALL_ACCESS}
//
// Service object specific access type
//
SERVICE_QUERY_CONFIG = $0001;
{$EXTERNALSYM SERVICE_QUERY_CONFIG}
SERVICE_CHANGE_CONFIG = $0002;
{$EXTERNALSYM SERVICE_CHANGE_CONFIG}
SERVICE_QUERY_STATUS = $0004;
{$EXTERNALSYM SERVICE_QUERY_STATUS}
SERVICE_ENUMERATE_DEPENDENTS = $0008;
{$EXTERNALSYM SERVICE_ENUMERATE_DEPENDENTS}
SERVICE_START = $0010;
{$EXTERNALSYM SERVICE_START}
SERVICE_STOP = $0020;
{$EXTERNALSYM SERVICE_STOP}
SERVICE_PAUSE_CONTINUE = $0040;
{$EXTERNALSYM SERVICE_PAUSE_CONTINUE}
SERVICE_INTERROGATE = $0080;
{$EXTERNALSYM SERVICE_INTERROGATE}
SERVICE_USER_DEFINED_CONTROL = $0100;
{$EXTERNALSYM SERVICE_USER_DEFINED_CONTROL}
SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or
SERVICE_QUERY_CONFIG or
SERVICE_CHANGE_CONFIG or
SERVICE_QUERY_STATUS or
SERVICE_ENUMERATE_DEPENDENTS or
SERVICE_START or
SERVICE_STOP or
SERVICE_PAUSE_CONTINUE or
SERVICE_INTERROGATE or
SERVICE_USER_DEFINED_CONTROL;
{$EXTERNALSYM SERVICE_ALL_ACCESS}
//
// Service flags for QueryServiceStatusEx
//
SERVICE_RUNS_IN_SYSTEM_PROCESS = $00000001;
{$EXTERNALSYM SERVICE_RUNS_IN_SYSTEM_PROCESS}
//
// Info levels for ChangeServiceConfig2 and QueryServiceConfig2
//
SERVICE_CONFIG_DESCRIPTION = 1;
{$EXTERNALSYM SERVICE_CONFIG_DESCRIPTION}
SERVICE_CONFIG_FAILURE_ACTIONS = 2;
{$EXTERNALSYM SERVICE_CONFIG_FAILURE_ACTIONS}
//
// Service description string
//
type
LPSERVICE_DESCRIPTIONA = ^SERVICE_DESCRIPTIONA;
{$EXTERNALSYM LPSERVICE_DESCRIPTIONA}
_SERVICE_DESCRIPTIONA = record
lpDescription: LPSTR;
end;
{$EXTERNALSYM _SERVICE_DESCRIPTIONA}
SERVICE_DESCRIPTIONA = _SERVICE_DESCRIPTIONA;
{$EXTERNALSYM SERVICE_DESCRIPTIONA}
TServiceDescriptionA = SERVICE_DESCRIPTIONA;
PServiceDescriptionA = LPSERVICE_DESCRIPTIONA;
//
// Service description string
//
LPSERVICE_DESCRIPTIONW = ^SERVICE_DESCRIPTIONW;
{$EXTERNALSYM LPSERVICE_DESCRIPTIONW}
_SERVICE_DESCRIPTIONW = record
lpDescription: LPWSTR;
end;
{$EXTERNALSYM _SERVICE_DESCRIPTIONW}
SERVICE_DESCRIPTIONW = _SERVICE_DESCRIPTIONW;
{$EXTERNALSYM SERVICE_DESCRIPTIONW}
TServiceDescriptionW = SERVICE_DESCRIPTIONW;
PServiceDescriptionW = LPSERVICE_DESCRIPTIONW;
{$IFDEF UNICODE}
SERVICE_DESCRIPTION = SERVICE_DESCRIPTIONW;
{$EXTERNALSYM SERVICE_DESCRIPTION}
LPSERVICE_DESCRIPTION = LPSERVICE_DESCRIPTIONW;
{$EXTERNALSYM LPSERVICE_DESCRIPTION}
TServiceDescription = TServiceDescriptionW;
PServiceDescription = PServiceDescriptionW;
{$ELSE}
SERVICE_DESCRIPTION = SERVICE_DESCRIPTIONA;
{$EXTERNALSYM SERVICE_DESCRIPTION}
LPSERVICE_DESCRIPTION = LPSERVICE_DESCRIPTIONA;
{$EXTERNALSYM LPSERVICE_DESCRIPTION}
TServiceDescription = TServiceDescriptionA;
PServiceDescription = PServiceDescriptionA;
{$ENDIF}
//
// Actions to take on service failure
//
_SC_ACTION_TYPE = (SC_ACTION_NONE, SC_ACTION_RESTART, SC_ACTION_REBOOT,
SC_ACTION_RUN_COMMAND);
{$EXTERNALSYM _SC_ACTION_TYPE}
SC_ACTION_TYPE = _SC_ACTION_TYPE;
{$EXTERNALSYM SC_ACTION_TYPE}
TScActionType = _SC_ACTION_TYPE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -