diff --git a/generated_def/windef.py b/generated_def/windef.py index 16d5491..bc72324 100644 --- a/generated_def/windef.py +++ b/generated_def/windef.py @@ -437,4 +437,36 @@ FILE_SUPPORTS_TRANSACTIONS = Flag("FILE_SUPPORTS_TRANSACTIONS", 0x00200000) FILE_SUPPORTS_HARD_LINKS = Flag("FILE_SUPPORTS_HARD_LINKS", 0x00400000) FILE_SUPPORTS_EXTENDED_ATTRIBUTES = Flag("FILE_SUPPORTS_EXTENDED_ATTRIBUTES", 0x00800000) FILE_SUPPORTS_OPEN_BY_FILE_ID = Flag("FILE_SUPPORTS_OPEN_BY_FILE_ID", 0x01000000) -FILE_SUPPORTS_USN_JOURNAL = Flag("FILE_SUPPORTS_USN_JOURNAL", 0x02000000) \ No newline at end of file +FILE_SUPPORTS_USN_JOURNAL = Flag("FILE_SUPPORTS_USN_JOURNAL", 0x02000000) +HKEY_CLASSES_ROOT = Flag("HKEY_CLASSES_ROOT", ( 0x80000000 )) +HKEY_CURRENT_USER = Flag("HKEY_CURRENT_USER", ( 0x80000001 )) +HKEY_LOCAL_MACHINE = Flag("HKEY_LOCAL_MACHINE", ( 0x80000002 )) +HKEY_USERS = Flag("HKEY_USERS", ( 0x80000003 )) +HKEY_PERFORMANCE_DATA = Flag("HKEY_PERFORMANCE_DATA", ( 0x80000004 )) +HKEY_PERFORMANCE_TEXT = Flag("HKEY_PERFORMANCE_TEXT", ( 0x80000050 )) +HKEY_PERFORMANCE_NLSTEXT = Flag("HKEY_PERFORMANCE_NLSTEXT", ( 0x80000060 )) +RRF_RT_REG_NONE = Flag("RRF_RT_REG_NONE", 0x00000001) +RRF_RT_REG_SZ = Flag("RRF_RT_REG_SZ", 0x00000002) +RRF_RT_REG_EXPAND_SZ = Flag("RRF_RT_REG_EXPAND_SZ", 0x00000004) +RRF_RT_REG_BINARY = Flag("RRF_RT_REG_BINARY", 0x00000008) +RRF_RT_REG_DWORD = Flag("RRF_RT_REG_DWORD", 0x00000010) +RRF_RT_REG_MULTI_SZ = Flag("RRF_RT_REG_MULTI_SZ", 0x00000020) +RRF_RT_REG_QWORD = Flag("RRF_RT_REG_QWORD", 0x00000040) +RRF_RT_DWORD = Flag("RRF_RT_DWORD", ( RRF_RT_REG_BINARY | RRF_RT_REG_DWORD )) +RRF_RT_QWORD = Flag("RRF_RT_QWORD", ( RRF_RT_REG_BINARY | RRF_RT_REG_QWORD )) +RRF_RT_ANY = Flag("RRF_RT_ANY", 0x0000ffff) +RRF_NOEXPAND = Flag("RRF_NOEXPAND", 0x10000000) +RRF_ZEROONFAILURE = Flag("RRF_ZEROONFAILURE", 0x20000000) +KEY_QUERY_VALUE = Flag("KEY_QUERY_VALUE", ( 0x0001 )) +KEY_SET_VALUE = Flag("KEY_SET_VALUE", ( 0x0002 )) +KEY_CREATE_SUB_KEY = Flag("KEY_CREATE_SUB_KEY", ( 0x0004 )) +KEY_ENUMERATE_SUB_KEYS = Flag("KEY_ENUMERATE_SUB_KEYS", ( 0x0008 )) +KEY_NOTIFY = Flag("KEY_NOTIFY", ( 0x0010 )) +KEY_CREATE_LINK = Flag("KEY_CREATE_LINK", ( 0x0020 )) +KEY_WOW64_32KEY = Flag("KEY_WOW64_32KEY", ( 0x0200 )) +KEY_WOW64_64KEY = Flag("KEY_WOW64_64KEY", ( 0x0100 )) +KEY_WOW64_RES = Flag("KEY_WOW64_RES", ( 0x0300 )) +KEY_READ = Flag("KEY_READ", ( ( STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY ) & ( ~SYNCHRONIZE ) )) +KEY_WRITE = Flag("KEY_WRITE", ( ( STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|KEY_CREATE_SUB_KEY ) & ( ~SYNCHRONIZE ) )) +KEY_EXECUTE = Flag("KEY_EXECUTE", ( ( KEY_READ ) & ( ~SYNCHRONIZE ) )) +KEY_ALL_ACCESS = Flag("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 ) )) \ No newline at end of file diff --git a/generated_def/winfuncs.py b/generated_def/winfuncs.py index 86cda2f..e6477af 100644 --- a/generated_def/winfuncs.py +++ b/generated_def/winfuncs.py @@ -3,7 +3,7 @@ from ctypes import * from ctypes.wintypes import * from .winstructs import * -functions = ['ExitProcess', 'GetLastError', 'GetCurrentProcess', 'CreateFileA', 'CreateFileW', 'NtQuerySystemInformation', 'VirtualAlloc', 'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualProtect', 'VirtualQuery', 'GetModuleFileNameA', 'GetModuleFileNameW', 'CreateThread', 'CreateRemoteThread', 'VirtualProtect', 'CreateProcessA', 'CreateProcessW', 'GetThreadContext', 'SetThreadContext', 'OpenThread', 'OpenProcess', 'CloseHandle', 'ReadProcessMemory', 'NtWow64ReadVirtualMemory64', 'WriteProcessMemory', 'CreateToolhelp32Snapshot', 'Thread32First', 'Thread32Next', 'Process32First', 'Process32Next', 'Process32FirstW', 'Process32NextW', 'GetProcAddress', 'LoadLibraryA', 'LoadLibraryW', 'OpenProcessToken', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW', 'AdjustTokenPrivileges', 'FindResourceA', 'FindResourceW', 'SizeofResource', 'LoadResource', 'LockResource', 'GetVersionExA', 'GetVersionExW', 'GetVersion', 'GetCurrentThread', 'GetCurrentThreadId', 'GetCurrentProcessorNumber', 'AllocConsole', 'GetStdHandle', 'SetStdHandle', 'SetThreadAffinityMask', 'WriteFile', 'GetExtendedTcpTable', 'GetExtendedUdpTable', 'SetTcpEntry', 'AddVectoredContinueHandler', 'AddVectoredExceptionHandler', 'TerminateThread', 'ExitThread', 'RemoveVectoredExceptionHandler', 'ResumeThread', 'SuspendThread', 'WaitForSingleObject', 'GetThreadId', 'LoadLibraryExA', 'LoadLibraryExW', 'SymInitialize', 'SymFromName', 'SymLoadModuleEx', 'SymSetOptions', 'SymGetTypeInfo', 'DeviceIoControl'] +functions = ['ExitProcess', 'GetLastError', 'GetCurrentProcess', 'CreateFileA', 'CreateFileW', 'NtQuerySystemInformation', 'VirtualAlloc', 'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualProtect', 'VirtualQuery', 'GetModuleFileNameA', 'GetModuleFileNameW', 'CreateThread', 'CreateRemoteThread', 'VirtualProtect', 'CreateProcessA', 'CreateProcessW', 'GetThreadContext', 'SetThreadContext', 'OpenThread', 'OpenProcess', 'CloseHandle', 'ReadProcessMemory', 'NtWow64ReadVirtualMemory64', 'WriteProcessMemory', 'CreateToolhelp32Snapshot', 'Thread32First', 'Thread32Next', 'Process32First', 'Process32Next', 'Process32FirstW', 'Process32NextW', 'GetProcAddress', 'LoadLibraryA', 'LoadLibraryW', 'OpenProcessToken', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW', 'AdjustTokenPrivileges', 'FindResourceA', 'FindResourceW', 'SizeofResource', 'LoadResource', 'LockResource', 'GetVersionExA', 'GetVersionExW', 'GetVersion', 'GetCurrentThread', 'GetCurrentThreadId', 'GetCurrentProcessorNumber', 'AllocConsole', 'GetStdHandle', 'SetStdHandle', 'SetThreadAffinityMask', 'WriteFile', 'GetExtendedTcpTable', 'GetExtendedUdpTable', 'SetTcpEntry', 'AddVectoredContinueHandler', 'AddVectoredExceptionHandler', 'TerminateThread', 'ExitThread', 'RemoveVectoredExceptionHandler', 'ResumeThread', 'SuspendThread', 'WaitForSingleObject', 'GetThreadId', 'LoadLibraryExA', 'LoadLibraryExW', 'SymInitialize', 'SymFromName', 'SymLoadModuleEx', 'SymSetOptions', 'SymGetTypeInfo', 'DeviceIoControl', 'GetTokenInformation', 'RegOpenKeyExA', 'RegOpenKeyExW', 'RegGetValueA', 'RegGetValueW', 'RegCloseKey'] # ExitProcess(uExitCode): ExitProcessPrototype = WINFUNCTYPE(VOID, UINT) @@ -313,3 +313,27 @@ SymGetTypeInfoParams = ((1, 'hProcess'), (1, 'ModBase'), (1, 'TypeId'), (1, 'Get DeviceIoControlPrototype = WINFUNCTYPE(BOOL, HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED) DeviceIoControlParams = ((1, 'hDevice'), (1, 'dwIoControlCode'), (1, 'lpInBuffer'), (1, 'nInBufferSize'), (1, 'lpOutBuffer'), (1, 'nOutBufferSize'), (1, 'lpBytesReturned'), (1, 'lpOverlapped')) +# GetTokenInformation(TokenHandle, TokenInformationClass, TokenInformation, TokenInformationLength, ReturnLength): +GetTokenInformationPrototype = WINFUNCTYPE(BOOL, HANDLE, TOKEN_INFORMATION_CLASS, LPVOID, DWORD, PDWORD) +GetTokenInformationParams = ((1, 'TokenHandle'), (1, 'TokenInformationClass'), (1, 'TokenInformation'), (1, 'TokenInformationLength'), (1, 'ReturnLength')) + +# RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, phkResult): +RegOpenKeyExAPrototype = WINFUNCTYPE(LONG, HKEY, LPCSTR, DWORD, REGSAM, PHKEY) +RegOpenKeyExAParams = ((1, 'hKey'), (1, 'lpSubKey'), (1, 'ulOptions'), (1, 'samDesired'), (1, 'phkResult')) + +# RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, phkResult): +RegOpenKeyExWPrototype = WINFUNCTYPE(LONG, HKEY, LPWSTR, DWORD, REGSAM, PHKEY) +RegOpenKeyExWParams = ((1, 'hKey'), (1, 'lpSubKey'), (1, 'ulOptions'), (1, 'samDesired'), (1, 'phkResult')) + +# RegGetValueA(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData): +RegGetValueAPrototype = WINFUNCTYPE(LONG, HKEY, LPCSTR, LPCSTR, DWORD, LPDWORD, PVOID, LPDWORD) +RegGetValueAParams = ((1, 'hkey'), (1, 'lpSubKey'), (1, 'lpValue'), (1, 'dwFlags'), (1, 'pdwType'), (1, 'pvData'), (1, 'pcbData')) + +# RegGetValueW(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData): +RegGetValueWPrototype = WINFUNCTYPE(LONG, HKEY, LPWSTR, LPWSTR, DWORD, LPDWORD, PVOID, LPDWORD) +RegGetValueWParams = ((1, 'hkey'), (1, 'lpSubKey'), (1, 'lpValue'), (1, 'dwFlags'), (1, 'pdwType'), (1, 'pvData'), (1, 'pcbData')) + +# RegCloseKey(hKey): +RegCloseKeyPrototype = WINFUNCTYPE(LONG, HKEY) +RegCloseKeyParams = ((1, 'hKey'),) + diff --git a/generated_def/winstructs.py b/generated_def/winstructs.py index 980d9c8..50a6460 100644 --- a/generated_def/winstructs.py +++ b/generated_def/winstructs.py @@ -25,12 +25,16 @@ ULONG64 = c_ulonglong DWORD64 = ULONG64 PULONG64 = POINTER(ULONG64) PHANDLE = POINTER(HANDLE) +HKEY = HANDLE +PHKEY = POINTER(HKEY) +ACCESS_MASK = DWORD +REGSAM = ACCESS_MASK LPCONTEXT = PVOID VOID = DWORD -structs = ['_LIST_ENTRY', '_PEB_LDR_DATA', '_LSA_UNICODE_STRING', '_RTL_USER_PROCESS_PARAMETERS', '_PEB', '_SECURITY_ATTRIBUTES', '_SYSTEM_VERIFIER_INFORMATION', '_LDR_DATA_TABLE_ENTRY', '_IMAGE_FILE_HEADER', '_IMAGE_DATA_DIRECTORY', '_IMAGE_SECTION_HEADER', '_IMAGE_OPTIONAL_HEADER64', '_IMAGE_OPTIONAL_HEADER', '_IMAGE_NT_HEADERS64', '_IMAGE_NT_HEADERS', '_IMAGE_IMPORT_DESCRIPTOR', '_IMAGE_IMPORT_BY_NAME', '_IMAGE_EXPORT_DIRECTORY', '_MEMORY_BASIC_INFORMATION', '_STARTUPINFOA', '_STARTUPINFOW', '_PROCESS_INFORMATION', '_FLOATING_SAVE_AREA', '_CONTEXT32', '_M128A', '_CONTEXT64', 'tagPROCESSENTRY32W', 'tagPROCESSENTRY32', 'tagTHREADENTRY32', '_LUID', '_LUID_AND_ATTRIBUTES', '_TOKEN_PRIVILEGES', '_OSVERSIONINFOA', '_OSVERSIONINFOW', '_OSVERSIONINFOEXA', '_OSVERSIONINFOEXW', '_OVERLAPPED', '_MIB_TCPROW_OWNER_PID', '_MIB_TCPTABLE_OWNER_PID', '_MIB_UDPROW_OWNER_PID', '_MIB_UDPTABLE_OWNER_PID', '_MIB_UDP6ROW_OWNER_PID', '_MIB_UDP6TABLE_OWNER_PID', '_MIB_TCP6ROW_OWNER_PID', '_MIB_TCP6TABLE_OWNER_PID', '_MIB_TCPROW', '_EXCEPTION_RECORD', '_EXCEPTION_POINTERS64', '_EXCEPTION_POINTERS32', '_DEBUG_PROCESSOR_IDENTIFICATION_ALPHA', '_DEBUG_PROCESSOR_IDENTIFICATION_AMD64', '_DEBUG_PROCESSOR_IDENTIFICATION_IA64', '_DEBUG_PROCESSOR_IDENTIFICATION_X86', '_DEBUG_PROCESSOR_IDENTIFICATION_ARM', '_DEBUG_PROCESSOR_IDENTIFICATION_ALL', '_SYMBOL_INFO', '_MODLOAD_DATA'] +structs = ['_LIST_ENTRY', '_PEB_LDR_DATA', '_LSA_UNICODE_STRING', '_RTL_USER_PROCESS_PARAMETERS', '_PEB', '_SECURITY_ATTRIBUTES', '_SYSTEM_VERIFIER_INFORMATION', '_LDR_DATA_TABLE_ENTRY', '_IMAGE_FILE_HEADER', '_IMAGE_DATA_DIRECTORY', '_IMAGE_SECTION_HEADER', '_IMAGE_OPTIONAL_HEADER64', '_IMAGE_OPTIONAL_HEADER', '_IMAGE_NT_HEADERS64', '_IMAGE_NT_HEADERS', '_IMAGE_IMPORT_DESCRIPTOR', '_IMAGE_IMPORT_BY_NAME', '_IMAGE_EXPORT_DIRECTORY', '_MEMORY_BASIC_INFORMATION', '_STARTUPINFOA', '_STARTUPINFOW', '_PROCESS_INFORMATION', '_FLOATING_SAVE_AREA', '_CONTEXT32', '_M128A', '_CONTEXT64', 'tagPROCESSENTRY32W', 'tagPROCESSENTRY32', 'tagTHREADENTRY32', '_LUID', '_LUID_AND_ATTRIBUTES', '_TOKEN_PRIVILEGES', '_TOKEN_ELEVATION', '_OSVERSIONINFOA', '_OSVERSIONINFOW', '_OSVERSIONINFOEXA', '_OSVERSIONINFOEXW', '_OVERLAPPED', '_MIB_TCPROW_OWNER_PID', '_MIB_TCPTABLE_OWNER_PID', '_MIB_UDPROW_OWNER_PID', '_MIB_UDPTABLE_OWNER_PID', '_MIB_UDP6ROW_OWNER_PID', '_MIB_UDP6TABLE_OWNER_PID', '_MIB_TCP6ROW_OWNER_PID', '_MIB_TCP6TABLE_OWNER_PID', '_MIB_TCPROW', '_EXCEPTION_RECORD', '_EXCEPTION_POINTERS64', '_EXCEPTION_POINTERS32', '_DEBUG_PROCESSOR_IDENTIFICATION_ALPHA', '_DEBUG_PROCESSOR_IDENTIFICATION_AMD64', '_DEBUG_PROCESSOR_IDENTIFICATION_IA64', '_DEBUG_PROCESSOR_IDENTIFICATION_X86', '_DEBUG_PROCESSOR_IDENTIFICATION_ARM', '_DEBUG_PROCESSOR_IDENTIFICATION_ALL', '_SYMBOL_INFO', '_MODLOAD_DATA'] -enums = ['_SYSTEM_INFORMATION_CLASS', '_TCP_TABLE_CLASS', '_UDP_TABLE_CLASS', '_MIB_TCP_STATE', '_IMAGEHLP_SYMBOL_TYPE_INFO'] +enums = ['_SYSTEM_INFORMATION_CLASS', '_TCP_TABLE_CLASS', '_UDP_TABLE_CLASS', '_MIB_TCP_STATE', '_TOKEN_INFORMATION_CLASS', '_IMAGEHLP_SYMBOL_TYPE_INFO'] # Enum _SYSTEM_INFORMATION_CLASS definitions _SYSTEM_INFORMATION_CLASS = DWORD @@ -119,6 +123,7 @@ SystemSuperfetchInformation = 0x4f SystemMemoryListInformation = 0x50 SystemFileCacheInformationEx = 0x51 MaxSystemInfoClass = 0x52 + # Enum _TCP_TABLE_CLASS definitions _TCP_TABLE_CLASS = DWORD TCP_TABLE_CLASS = _TCP_TABLE_CLASS @@ -132,6 +137,7 @@ TCP_TABLE_OWNER_PID_ALL = 0x5 TCP_TABLE_OWNER_MODULE_LISTENER = 0x6 TCP_TABLE_OWNER_MODULE_CONNECTIONS = 0x7 TCP_TABLE_OWNER_MODULE_ALL = 0x8 + # Enum _UDP_TABLE_CLASS definitions _UDP_TABLE_CLASS = DWORD UDP_TABLE_CLASS = _UDP_TABLE_CLASS @@ -139,6 +145,7 @@ UDP_TABLE_CLASS = _UDP_TABLE_CLASS UDP_TABLE_BASIC = 0x0 UDP_TABLE_OWNER_PID = 0x1 UDP_TABLE_OWNER_MODULE = 0x2 + # Enum _MIB_TCP_STATE definitions _MIB_TCP_STATE = DWORD MIB_TCP_STATE = _MIB_TCP_STATE @@ -155,6 +162,55 @@ MIB_TCP_STATE_CLOSING = 0x9 MIB_TCP_STATE_LAST_ACK = 0xa MIB_TCP_STATE_TIME_WAIT = 0xb MIB_TCP_STATE_DELETE_TCB = 0xc + +# Enum _TOKEN_INFORMATION_CLASS definitions +_TOKEN_INFORMATION_CLASS = DWORD +TOKEN_INFORMATION_CLASS = _TOKEN_INFORMATION_CLASS +PTOKEN_INFORMATION_CLASS = POINTER(_TOKEN_INFORMATION_CLASS) + +TokenInvalid = 0x0 +TokenUser = 0x1 +TokenGroups = 0x2 +TokenPrivileges = 0x3 +TokenOwner = 0x4 +TokenPrimaryGroup = 0x5 +TokenDefaultDacl = 0x6 +TokenSource = 0x7 +TokenType = 0x8 +TokenImpersonationLevel = 0x9 +TokenStatistics = 0xa +TokenRestrictedSids = 0xb +TokenSessionId = 0xc +TokenGroupsAndPrivileges = 0xd +TokenSessionReference = 0xe +TokenSandBoxInert = 0xf +TokenAuditPolicy = 0x10 +TokenOrigin = 0x11 +TokenElevationType = 0x12 +TokenLinkedToken = 0x13 +TokenElevation = 0x14 +TokenHasRestrictions = 0x15 +TokenAccessInformation = 0x16 +TokenVirtualizationAllowed = 0x17 +TokenVirtualizationEnabled = 0x18 +TokenIntegrityLevel = 0x19 +TokenUIAccess = 0x1a +TokenMandatoryPolicy = 0x1b +TokenLogonSid = 0x1c +TokenIsAppContainer = 0x1d +TokenCapabilities = 0x1e +TokenAppContainerSid = 0x1f +TokenAppContainerNumber = 0x20 +TokenUserClaimAttributes = 0x21 +TokenDeviceClaimAttributes = 0x22 +TokenRestrictedUserClaimAttributes = 0x23 +TokenRestrictedDeviceClaimAttributes = 0x24 +TokenDeviceGroups = 0x25 +TokenRestrictedDeviceGroups = 0x26 +TokenSecurityAttributes = 0x27 +TokenIsRestricted = 0x28 +MaxTokenInfoClass = 0x29 + # Enum _IMAGEHLP_SYMBOL_TYPE_INFO definitions _IMAGEHLP_SYMBOL_TYPE_INFO = DWORD IMAGEHLP_SYMBOL_TYPE_INFO = _IMAGEHLP_SYMBOL_TYPE_INFO @@ -193,6 +249,7 @@ TI_GET_VIRTUALBASEDISPINDEX = 0x1e TI_GET_IS_REFERENCE = 0x1f TI_GET_INDIRECTVIRTUALBASECLASS = 0x20 IMAGEHLP_SYMBOL_TYPE_INFO_MAX = 0x21 + # Struct _LIST_ENTRY definitions # Self referencing struct tricks class _LIST_ENTRY(Structure): pass @@ -773,6 +830,14 @@ class _TOKEN_PRIVILEGES(Structure): TOKEN_PRIVILEGES = _TOKEN_PRIVILEGES PTOKEN_PRIVILEGES = POINTER(_TOKEN_PRIVILEGES) +# Struct _TOKEN_ELEVATION definitions +class _TOKEN_ELEVATION(Structure): + _fields_ = [ + ("TokenIsElevated", DWORD), + ] +TOKEN_ELEVATION = _TOKEN_ELEVATION +PTOKEN_ELEVATION = POINTER(_TOKEN_ELEVATION) + # Struct _OSVERSIONINFOA definitions class _OSVERSIONINFOA(Structure): _fields_ = [ diff --git a/k32testing.py b/k32testing.py index f54378f..18efd0f 100644 --- a/k32testing.py +++ b/k32testing.py @@ -398,6 +398,36 @@ def AdjustTokenPrivileges(TokenHandle, DisableAllPrivileges=False, NewState=Need BufferLength = ctypes.sizeof(NewState) return AdjustTokenPrivileges.ctypes_function(TokenHandle, DisableAllPrivileges, NewState, BufferLength, PreviousState, ReturnLength) +# Registry stuff + +@Advapi32Proxy('GetTokenInformation') +def GetTokenInformation(TokenHandle=NeededParameter, TokenInformationClass=NeededParameter, TokenInformation=None, TokenInformationLength=0, ReturnLength=None): + if ReturnLength is None: + ReturnLength = ctypes.byref(DWORD()) + return GetTokenInformation.ctypes_function(TokenHandle, TokenInformationClass, TokenInformation, TokenInformationLength, ReturnLength) + +@Advapi32Proxy('RegOpenKeyExA') +def RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, phkResult): + return RegOpenKeyExA.ctypes_function(hKey, lpSubKey, ulOptions, samDesired, phkResult) + +# TODO: default values? which ones ? + +@Advapi32Proxy('RegOpenKeyExW') +def RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, phkResult): + return RegOpenKeyExW.ctypes_function(hKey, lpSubKey, ulOptions, samDesired, phkResult) + +@Advapi32Proxy('RegGetValueA') +def RegGetValueA(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData): + return RegGetValueA.ctypes_function(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData) + +@Advapi32Proxy('RegGetValueW') +def RegGetValueW(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData): + return RegGetValueW.ctypes_function(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData) + +@Advapi32Proxy('RegCloseKey') +def RegCloseKey(hKey): + return RegCloseKey.ctypes_function(hKey) + ###### Iphlpapi (network list and stuff) #######