# (c) 1995 Microsoft Corporation. All rights reserved # Developed by hip communications inc., http://info.hip.com/info # WYT 1995-05-18 Wei-Yuen Tan (wyt@hip.com) # reg.ph - macro definitions for NT Registry Extensions # auto-extracted from windows.h, winreg.h, winnt.h # EDIT AT YOUR OWN RISK! eval ' # miscellaneous sub NULL { (0);} sub WIN31_CLASS { &NULL;} # eventlog read flags sub EVENTLOG_SEQUENTIAL_READ {0x0001;} sub EVENTLOG_SEEK_READ {0x0002;} sub EVENTLOG_FORWARDS_READ {0x0004;} sub EVENTLOG_BACKWARDS_READ {0x0008;} # event types sub EVENTLOG_SUCCESS {0x0000;} sub EVENTLOG_ERROR_TYPE {0x0001;} sub EVENTLOG_WARNING_TYPE {0x0002;} sub EVENTLOG_INFORMATION_TYPE {0x0004;} sub EVENTLOG_AUDIT_SUCCESS {0x0008;} sub EVENTLOG_AUDIT_FAILURE {0x0010;} # write flags for auditing for paired events. sub EVENTLOG_START_PAIRED_EVENT {0x0001;} sub EVENTLOG_END_PAIRED_EVENT {0x0002;} sub EVENTLOG_END_ALL_PAIRED_EVENTS {0x0004;} sub EVENTLOG_PAIRED_EVENT_ACTIVE {0x0008;} sub EVENTLOG_PAIRED_EVENT_INACTIVE {0x0010;} # predefined registry handles. sub HKEY_CLASSES_ROOT {( 0x80000000 );} sub HKEY_CURRENT_USER {( 0x80000001 );} sub HKEY_LOCAL_MACHINE {( 0x80000002 );} sub HKEY_USERS {( 0x80000003 );} sub HKEY_PERFORMANCE_DATA {( 0x80000004 );} sub HKEY_PERFORMANCE_TEXT {( 0x80000050 );} sub HKEY_PERFORMANCE_NLSTEXT {( 0x80000060 );} # registry key access modes. sub DELETE {(0x00010000);} sub READ_CONTROL {(0x00020000);} sub WRITE_DAC {(0x00040000);} sub WRITE_OWNER {(0x00080000);} sub SYNCHRONIZE {(0x00100000);} sub STANDARD_RIGHTS_REQUIRED {(0x000F0000);} sub STANDARD_RIGHTS_READ {( &READ_CONTROL);} sub STANDARD_RIGHTS_WRITE {( &READ_CONTROL);} sub STANDARD_RIGHTS_EXECUTE {( &READ_CONTROL);} sub STANDARD_RIGHTS_ALL {(0x001F0000);} sub SPECIFIC_RIGHTS_ALL {(0x0000FFFF);} sub ACCESS_SYSTEM_SECURITY {(0x01000000);} sub MAXIMUM_ALLOWED {(0x02000000);} sub GENERIC_READ {(0x80000000);} sub GENERIC_WRITE {(0x40000000);} sub GENERIC_EXECUTE {(0x20000000);} sub GENERIC_ALL {(0x10000000);} sub KEY_QUERY_VALUE {(0x0001);} sub KEY_SET_VALUE {(0x0002);} sub KEY_CREATE_SUB_KEY {(0x0004);} sub KEY_ENUMERATE_SUB_KEYS {(0x0008);} sub KEY_NOTIFY {(0x0010);} sub KEY_CREATE_LINK {(0x0020);} sub KEY_READ {(( &STANDARD_RIGHTS_READ | &KEY_QUERY_VALUE | &KEY_ENUMERATE_SUB_KEYS | &KEY_NOTIFY) & (~ &SYNCHRONIZE));} sub KEY_WRITE {(( &STANDARD_RIGHTS_WRITE | &KEY_SET_VALUE | &KEY_CREATE_SUB_KEY) & (~ &SYNCHRONIZE));} sub KEY_EXECUTE {(( &KEY_READ) & (~ &SYNCHRONIZE));} sub KEY_ALL_ACCESS {(( &STANDARD_RIGHTS_ALL | &KEY_QUERY_VALUE | &KEY_SET_VALUE | &KEY_CREATE_SUB_KEY | &KEY_ENUMERATE_SUB_KEYS | &KEY_NOTIFY | &KEY_CREATE_LINK) & (~ &SYNCHRONIZE));} # registry key creation options sub REG_OPTION_RESERVED {(0x00000000);} sub REG_OPTION_NON_VOLATILE {(0x00000000);} sub REG_OPTION_VOLATILE {(0x00000001);} sub REG_OPTION_CREATE_LINK {(0x00000002);} sub REG_OPTION_BACKUP_RESTORE {(0x00000004);} sub REG_LEGAL_OPTION {( ®_OPTION_RESERVED | ®_OPTION_NON_VOLATILE | ®_OPTION_VOLATILE | ®_OPTION_CREATE_LINK | ®_OPTION_BACKUP_RESTORE);} # miscellaneous registry stuff. sub REG_CREATED_NEW_KEY {(0x00000001);} sub REG_OPENED_EXISTING_KEY {(0x00000002);} sub REG_WHOLE_HIVE_VOLATILE {(0x00000001);} sub REG_REFRESH_HIVE {(0x00000002);} # registry data types sub REG_NONE {( 0 );} sub REG_SZ {( 1 );} sub REG_EXPAND_SZ {( 2 );} sub REG_BINARY {( 3 );} sub REG_DWORD {( 4 );} sub REG_DWORD_LITTLE_ENDIAN {( 4 );} sub REG_DWORD_BIG_ENDIAN {( 5 );} sub REG_LINK {( 6 );} sub REG_MULTI_SZ {( 7 );} sub REG_RESOURCE_LIST {( 8 );} sub REG_FULL_RESOURCE_DESCRIPTOR {( 9 );} sub REG_RESOURCE_REQUIREMENTS_LIST {( 10 );} # OLE Automation data types. sub VT_EMPTY {0;} sub VT_NULL {1;} sub VT_I2 {2;} sub VT_I4 {3;} sub VT_R4 {4;} sub VT_R8 {5;} sub VT_CY {6;} sub VT_DATE {7;} sub VT_BSTR {8;} sub VT_DISPATCH {9;} sub VT_ERROR {10;} sub VT_BOOL {11;} sub VT_VARIANT {12;} sub VT_UNKNOWN {13;} sub VT_I1 {16;} sub VT_UI1 {17;} sub VT_UI2 {18;} sub VT_UI4 {19;} sub VT_I8 {20;} sub VT_UI8 {21;} sub VT_INT {22;} sub VT_UINT {23;} sub VT_VOID {24;} sub VT_HRESULT {25;} sub VT_PTR {26;} sub VT_SAFEARRAY {27;} sub VT_CARRAY {28;} sub VT_USERDEFINED {29;} sub VT_LPSTR {30;} sub VT_LPWSTR {31;} sub VT_FILETIME {64;} sub VT_BLOB {65;} sub VT_STREAM {66;} sub VT_STORAGE {67;} sub VT_STREAMED_OBJECT {68;} sub VT_STORED_OBJECT {69;} sub VT_BLOB_OBJECT {70;} sub VT_CF {71;} sub VT_CLSID {72;} @supportedTypes = ( &VT_UI1, &VT_I2, &VT_I4, &VT_R4, &VT_R8, &VT_DATE, &VT_SAFEARRAY, &VT_BSTR, &VT_CY, &VT_EMPTY, &VT_ERROR, &VT_DISPATCH, &VT_VARIANT, &VT_UNKNOWN, &VT_USERDEFINED, &VT_BOOL, ); sub NTOLESupportedType { my( $type ) = @_; scalar( grep( do { $type == $_ }, @supportedTypes ) ); } # Typelib sub TKIND_ENUM {0;} sub TKIND_RECORD { &TKIND_ENUM + 1;} sub TKIND_MODULE { &TKIND_RECORD + 1;} sub TKIND_INTERFACE { &TKIND_MODULE + 1;} sub TKIND_DISPATCH { &TKIND_INTERFACE + 1;} sub TKIND_COCLASS { &TKIND_DISPATCH + 1;} sub TKIND_ALIAS { &TKIND_COCLASS + 1;} sub TKIND_UNION { &TKIND_ALIAS + 1;} sub TKIND_MAX { &TKIND_UNION + 1;} # security information sub OWNER_SECURITY_INFORMATION {(0x00000001);} sub GROUP_SECURITY_INFORMATION {(0x00000002);} sub DACL_SECURITY_INFORMATION {(0x00000004);} sub SACL_SECURITY_INFORMATION {(0x00000008);} 1; ';