Whats wrong with this code? Help would be very welcome

I get return code (error) 1314 from regloadkey...

' CODE STARTS HERE
Option Explicit
Option Base 0

Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Public Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Public Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Public Declare Function GetLastError Lib "kernel32" () As Long
Public Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
Public Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
Public Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Public Type LUID
lowpart As Long
highpart As Long
End Type
Public Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Public Type TOKEN_PRIVILEGES
PrivilegeCount As Long
'Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
Privileges() As LUID_AND_ATTRIBUTES
End Type
Public Type LARGE_INTEGER
lowpart As Long
highpart As Long
End Type

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004

Public Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Public Const REG_OPTION_VOLATILE = 1 ' Key is not preserved when system is rebooted
Public Const REG_OPTION_BACKUP_RESTORE = 4 ' open for backup or restore

Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const PROCESS_VM_READ = &H10
Public Const MAX_PATH = 260
Public Const PROCESS_ALL_ACCESS = &H1F0FFF

Public Const SYNCHRONIZE = &H100000
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const READ_CONTROL = &H20000
Public Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Public Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)

Public Const KEY_CREATE_LINK = &H20
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Public Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))

Public Const REG_BINARY = 3 ' Free form binary
Public Const REG_DWORD = 4 ' 32-bit number
Public Const REG_DWORD_LITTLE_ENDIAN = 4 ' 32-bit number (same as REG_DWORD)
Public Const REG_DWORD_BIG_ENDIAN = 5 ' 32-bit number
Public Const REG_EXPAND_SZ = 2 ' Unicode nul terminated string
Public Const REG_LINK = 6 ' Symbolic Link (unicode)
Public Const REG_MULTI_SZ = 7 ' Multiple Unicode strings
Public Const REG_NONE = 0 ' No value type
Public Const REG_RESOURCE_LIST = 8 ' Resource list in the resource map
Public Const REG_SZ = 1 ' Unicode nul terminated string

Public Const SE_PRIVILEGE_ENABLED = &H2
Public Const SE_PRIVILEGE_ENABLED_BY_DEFAULT = &H1
Public Const SE_PRIVILEGE_USED_FOR_ACCESS = &H80000000

Public Const SE_RESTORE_NAME = "SeRestorePrivilege"
Public Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"

Public Const STANDARD_RIGHTS_REQUIRED = &HF0000

Public Const TOKEN_ASSIGN_PRIMARY = &H1
Public Const TOKEN_DUPLICATE = &H2
Public Const TOKEN_IMPERSONATE = &H4
Public Const TOKEN_QUERY = &H8
Public Const TOKEN_QUERY_SOURCE = &H10
Public Const TOKEN_ADJUST_PRIVILEGES = &H20
Public Const TOKEN_ADJUST_GROUPS = &H40
Public Const TOKEN_ADJUST_DEFAULT = &H80
Public Const TOKEN_ADJUST_SESSIONID = &H100
Public Const TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _
TOKEN_ASSIGN_PRIMARY Or _
TOKEN_DUPLICATE Or _
TOKEN_IMPERSONATE Or _
TOKEN_QUERY Or _
TOKEN_QUERY_SOURCE Or _
TOKEN_ADJUST_PRIVILEGES Or _
TOKEN_ADJUST_GROUPS Or _
TOKEN_ADJUST_SESSIONID Or _
TOKEN_ADJUST_DEFAULT)
Public Const TOKEN_READ = (STANDARD_RIGHTS_READ Or TOKEN_QUERY)
Public Const TOKEN_WRITE = (STANDARD_RIGHTS_WRITE Or _
TOKEN_ADJUST_PRIVILEGES Or _
TOKEN_ADJUST_GROUPS Or _
TOKEN_ADJUST_DEFAULT)
Public Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
Public Const TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE

Public Const NO_ERROR = 0
Public Const ERROR_ACCESS_DENIED = 5&
Public Const ERROR_ALREADY_ASSIGNED = 85&
Public Const ERROR_BAD_DEV_TYPE = 66&
Public Const ERROR_BAD_DEVICE = 1200&
Public Const ERROR_BAD_NET_NAME = 67&
Public Const ERROR_BAD_PROFILE = 1206&
Public Const ERROR_BAD_PROVIDER = 1204&
Public Const ERROR_BUSY = 170&
Public Const ERROR_CANNOT_OPEN_PROFILE = 1205&
Public Const ERROR_DEVICE_ALREADY_REMEMBERED = 1202&
Public Const ERROR_EXTENDED_ERROR = 1208&
Public Const ERROR_INVALID_PASSWORD = 86&
Public Const ERROR_NO_NET_OR_BAD_PATH = 1203&
Public Const ERROR_NO_NETWORK = 1222&
Public Const ERROR_NO_MORE_ITEMS = 259&
Public Const ERROR_NOT_ALL_ASSIGNED = 1300&
Public Const ERROR_SUCCESS = 0&

Sub Main()
Dim lpSystemName As String 'LookupPrivilegeValue
Dim lpName As String 'LookupPrivilegeValue
Dim lpLuid As LUID 'LookupPrivilegeValue

Dim ProcessHandle As Long 'OpenProcessToken
Dim DesiredAccess As Long 'OpenProcessToken
Dim TokenHandle As Long 'OpenProcessToken

'Dim TokenHandle As Long 'AdjustTokenPrivileges
Dim DisableAllPrivileges As Long 'AdjustTokenPrivileges
Dim NewState As TOKEN_PRIVILEGES 'AdjustTokenPrivileges
Dim BufferLength As Long 'AdjustTokenPrivileges
Dim PreviousState As TOKEN_PRIVILEGES 'AdjustTokenPrivileges
Dim ReturnLength As Long 'AdjustTokenPrivileges
Dim li As LARGE_INTEGER 'AdjustTokenPrivileges

Dim lpMachineName As String 'RegConnectRegistry
Dim hKey As Long 'RegConnectRegistry
Dim phkResult As Long 'RegConnectRegistry

Dim dwDesiredAccess As Long 'OpenProcess
Dim bInheritHandle As Long 'OpenProcess
Dim dwProcessId As Long 'OpenProcess

'Dim hKey As Long'RegLoadKey
Dim lpSubKey As String 'RegLoadKey
Dim lpFile As String 'RegLoadKey

Dim i As Long

'OpenProcess
dwProcessId = GetCurrentProcessId
dwDesiredAccess = SYNCHRONIZE Or PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ Or PROCESS_ALL_ACCESS
bInheritHandle = True
ProcessHandle = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId)

'OpenProcessToken
DesiredAccess = TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY
i = OpenProcessToken(ProcessHandle, DesiredAccess, TokenHandle) 'Non zero

'AdjustTokenPrivileges
DisableAllPrivileges = False
NewState.PrivilegeCount = 1
ReDim NewState.Privileges(NewState.PrivilegeCount)
'LookupPrivilegeValue
lpName = SE_RESTORE_NAME
i = LookupPrivilegeValue(lpSystemName, lpName, lpLuid) 'Non zero
NewState.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
NewState.Privileges(0).pLuid = lpLuid
PreviousState.PrivilegeCount = NewState.PrivilegeCount
ReDim PreviousState.Privileges(PreviousState.PrivilegeCount)
BufferLength = Len(PreviousState)
i = AdjustTokenPrivileges(TokenHandle, DisableAllPrivileges, NewState, BufferLength, PreviousState, ReturnLength) 'Non zero
'i = GetLastError()

hKey = HKEY_LOCAL_MACHINE
i = RegConnectRegistry(lpMachineName, hKey, phkResult) 'ERROR_SUCCESS

hKey = HKEY_LOCAL_MACHINE
lpSubKey = "NTUSER"
lpFile = "C:\Documents and Settings\Default User\NTUSER.DAT"
i = RegLoadKey(phkResult, lpSubKey, lpFile)
'i = RegLoadKey(hKey, lpSubKey, lpFile)

'-------------------------------------------------------------------------------
'Here I am supposed to add, modify or delete keys and values in the opened hive.
'-------------------------------------------------------------------------------

i = RegUnLoadKey(phkResult, lpSubKey)
'i = RegUnLoadKey(hKey, lpSubKey)

i = RegCloseKey(phkResult) 'ERROR_SUCCESS
'i = RegCloseKey(hKey) 'ERROR_SUCCESS

NewState.Privileges(0).Attributes = 0
i = AdjustTokenPrivileges(TokenHandle, DisableAllPrivileges, NewState, BufferLength, PreviousState, ReturnLength) 'Non zero
End Sub
' CODE ENDS HERE