📄 gpedit.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Group Policy interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: gpedit.h, released June 2000. }
{ The original Pascal code is: GpEdit.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 GPEdit;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "GPEdit.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
ActiveX, PrSht, WinType;
type
LPOLESTR = POleStr;
{$NODEFINE LPOLESTR}
//-----------------------------------------------------------------------------
//
// GPEDIT.H - Definitions and prototypes for Group Policy
//
// Copyright 1997-1999, Microsoft Corporation
//
//-----------------------------------------------------------------------------
//
// Terminology
//
// Group Policy Editor - The tool to view a Group Policy Object.
//
// Group Policy Object - A collection of administrator defined policies.
// Each Group Policy Object (GPO) has both file system
// and Active Directory storage available to it.
//
// IGPEInformation - The interface MMC Snapin Extensions use to
// talk to the Group Policy Editor.
//
// IGroupPolicyObject - The interface used to create/edit a GPO directly
// without going through the Group Policy Editor
//
//
// Group Policy Editor MMC SnapIn GUID
//
// {8FC0B734-A0E1-11d1-A7D3-0000F87571E3}
const
CLSID_GPESnapIn: TGUID = (
D1:$8fc0b734; D2:$a0e1; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM CLSID_GPESnapIn}
//
// Group Policy Editor node ids
//
//
// Computer Configuration\Windows Settings
// {8FC0B737-A0E1-11d1-A7D3-0000F87571E3}
//
NODEID_Machine: TGUID = (
D1:$8fc0b737; D2:$a0e1; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM NODEID_Machine}
//
// Computer Configuration\Software Settings
// {8FC0B73A-A0E1-11d1-A7D3-0000F87571E3}
//
NODEID_MachineSWSettings: TGUID = (
D1:$8fc0b73a; D2:$a0e1; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM NODEID_MachineSWSettings}
//
// User Configuration\Windows Settings
// {8FC0B738-A0E1-11d1-A7D3-0000F87571E3}
//
NODEID_User: TGUID = (
D1:$8fc0b738; D2:$a0e1; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM NODEID_User}
//
// User Configuration\Software Settings
// {8FC0B73C-A0E1-11d1-A7D3-0000F87571E3}
//
NODEID_UserSWSettings: TGUID = (
D1:$8fc0b73c; D2:$a0e1; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM NODEID_UserSWSettings}
//
// IGPEInformation interface id
//
// {8FC0B735-A0E1-11d1-A7D3-0000F87571E3}
IID_IGPEInformation: TGUID = (
D1:$8fc0b735; D2:$a0e1; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM IID_IGPEInformation}
//
// Group Policy Object class id
//
// {EA502722-A23D-11d1-A7D3-0000F87571E3}
CLSID_GroupPolicyObject: TGUID = (
D1:$ea502722; D2:$a23d; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM CLSID_GroupPolicyObject}
//
// Group Policy Object interface id
//
// {EA502723-A23D-11d1-A7D3-0000F87571E3}
IID_IGroupPolicyObject: TGUID = (
D1:$ea502723; D2:$a23d; D3:$11d1; D4:($a7, $d3, $0, $0, $f8, $75, $71, $e3));
{$EXTERNALSYM IID_IGroupPolicyObject}
//
// GUID that identifies the registry extension
//
REGISTRY_EXTENSION_GUID: TGUID = (
D1:$35378EAC; D2:$683F; D3:$11D2; D4:($A8, $9A, $00, $C0, $4F, $BB, $CF, $A2));
{$EXTERNALSYM IID_IGroupPolicyObject}
// #include <objbase.h>
//
// Group Policy Object Section flags
//
const
GPO_SECTION_ROOT = 0; // Root
{$EXTERNALSYM GPO_SECTION_ROOT}
GPO_SECTION_USER = 1; // User
{$EXTERNALSYM GPO_SECTION_USER}
GPO_SECTION_MACHINE = 2; // Machine
{$EXTERNALSYM GPO_SECTION_MACHINE}
//
// Group Policy Object types
//
type
_GROUP_POLICY_OBJECT_TYPE = (
GPOTypeLocal, // GPO on the local machine
GPOTypeRemote, // GPO on a remote machine
GPOTypeDS); // GPO in the Active Directory
{$EXTERNALSYM _GROUP_POLICY_OBJECT_TYPE}
GROUP_POLICY_OBJECT_TYPE = _GROUP_POLICY_OBJECT_TYPE;
{$EXTERNALSYM GROUP_POLICY_OBJECT_TYPE}
PGROUP_POLICY_OBJECT_TYPE = ^GROUP_POLICY_OBJECT_TYPE;
{$EXTERNALSYM PGROUP_POLICY_OBJECT_TYPE}
TGroupPolicyObjectType = GROUP_POLICY_OBJECT_TYPE;
PGroupPolicyObjectType = PGROUP_POLICY_OBJECT_TYPE;
//
// Group Policy Hint types
//
_GROUP_POLICY_HINT_TYPE = (
GPHintUnknown, // No link information available
GPHintMachine, // GPO linked to a machine (local or remote)
GPHintSite, // GPO linked to a site
GPHintDomain, // GPO linked to a domain
GPHintOrganizationalUnit); // GPO linked to a organizational unit
{$EXTERNALSYM _GROUP_POLICY_HINT_TYPE}
GROUP_POLICY_HINT_TYPE = _GROUP_POLICY_HINT_TYPE;
{$EXTERNALSYM GROUP_POLICY_HINT_TYPE}
PGROUP_POLICY_HINT_TYPE = ^GROUP_POLICY_HINT_TYPE;
{$EXTERNALSYM PGROUP_POLICY_HINT_TYPE}
TGroupPolicyHintType = GROUP_POLICY_HINT_TYPE;
PGroupPolicyHintType = PGROUP_POLICY_HINT_TYPE;
IGPEInformation = interface (IUnknown)
['{8FC0B735-A0E1-11d1-A7D3-0000F87571E3}']
// *** IGPEInformation methods ***
//
// Returns the unique Group Policy Object name (a GUID)
//
// pszName contains the name on return
// cchMaxLength is the max number of characters that can be stored in pszName
//
function GetName(pszName: LPOLESTR; cchMaxLength: Integer): HRESULT; stdcall;
//
// Returns the friendly display name for this Group Policy Object
//
// pszName contains the name on return
// cchMaxLength is the max number of characters that can be stored in pszName
//
function GetDisplayName(pszName: LPOLESTR; cchMaxLength: Integer): HRESULT; stdcall;
//
// Returns a registry key handle for the requested section. The returned
// key is the root of the registry, not the Policies subkey. To set / read
// a value in the Policies subkey, you will need to call RegOpenKeyEx to
// open Software\Policies subkey first.
//
// The handle has been opened with ALL ACCESS rights. Call RegCloseKey
// on the handle when finished.
//
// dwSection is either GPO_SECTION_USER or GPO_SECTION_MACHINE
// hKey contains the registry key on return
//
function GetRegistryKey(dwSection: DWORD; var hKey: HKEY): HRESULT; stdcall;
//
// Returns the Active Directory path to the root of the request section.
// The path is in ADSI name format.
//
// dwSection is one of the GPO_SECTION_* flags
// pszPath contains the path on return
// cchMaxPath is the max number of characters that can be stored in pszPath
//
function GetDSPath(dwSection: DWORD; pszPath: LPOLESTR; cchMaxPath: Integer): HRESULT; stdcall;
//
// Returns the UNC path to the root of the requested section.
//
// dwSection is one of the GPO_SECTION_* flags
// pszPath contains the path on return
// cchMaxPath is the number of characters that can be stored in pszPath.
//
function GetFileSysPath(dwSection: DWORD; pszPath: LPOLESTR; cchMaxPath: Integer): HRESULT; stdcall;
//
// Returns the user preferences (options)
//
// Currently, there are no options defined. This is reserved for future use.
//
// dwOptions receives a bitmask value
//
function GetOptions(var dwOptions: DWORD): HRESULT; stdcall;
//
// Returns the type of GPO being edited.
//
// The three types are: a GPO in the Active Directory, the GPO on the local machine,
// and the GPO on a remote machine.
//
// Machine GPOs only have file system storage (no Active Directory storage available).
// If GetDSPath is called for a machine GPO, the function will succeed
// and the returned buffer will be the empty string ""
//
// Active Directory GPOs have both file system and Active Directory storage available to them.
//
// gpoType receives one of the type flags listed above.
//
function GetType(var gpoType: GROUP_POLICY_OBJECT_TYPE): HRESULT; stdcall;
//
// Returns the type of Active Directory object (or machine) that could be linked to
// this GPO
//
// This is a hint api only. The GPE does not know which Active Directory objects are
// linked to a particular GPO, but it can offer a hint based upon how the
// user started the GPE.
//
// Use this method with great caution. Some extensions might want to
// customize their user interface based upon the scoping for this GPO,
// but it is easy to offer the wrong namespace. Best advice is to
// always offer your full user interface, but if you choose to use this
// method, always offer your full user interface if you recieve the
// unknown hint back.
//
// gpHint receives one of the hint flags listed above.
//
function GetHint(var gpHint: GROUP_POLICY_HINT_TYPE): HRESULT; stdcall;
//
// Informs the Group Policy Editor that policy settings have changed.
// Extensions MUST call this methold every time a change is made
// to a Group Policy Object.
//
// bMachine specifies if machine or user policy has changed.
// bAdd specifies whether this is an add or delete.
// pGuidExtension is the guid or unique name of extension that
// will process this GPO.
// pGuidSnapin is the guid or unique name of snapin that is making
// this call
//
function PolicyChanged(bMachine, bAdd: BOOL; const pGuidExtension, pGuidSnapin: GUID): HRESULT; stdcall;
end;
{$EXTERNALSYM IGPEInformation}
LPGPEINFORMATION = ^IGPEInformation;
{$EXTERNALSYM LPGPEINFORMATION}
//
// Group Policy Object open / creation flags
//
const
GPO_OPEN_LOAD_REGISTRY = $00000001; // Load the registry files
{$EXTERNALSYM GPO_OPEN_LOAD_REGISTRY}
GPO_OPEN_READ_ONLY = $00000002; // Open the GPO as read only
{$EXTERNALSYM GPO_OPEN_READ_ONLY}
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -