Следует проверить права на раздел который хотите удалить (Разрешения...), если от программы есть драйвер, то дезактивируйте его на время удаления, хотя если Вам удалось его (раздел) переименовать, то дело тут не в драйвере...
NameKey := "SYSTEM\ControlSet002\Control\Class\123"
NeWNameKey := "SYSTEM\ControlSet002\Control\Class\666"
Result := RegRename("HKLM", NameKey, NeWNameKey)
RegRename(RegRoot, Key, Target)
{
HKLM := HKEY_LOCAL_MACHINE := 0x80000002
Result := DllCall("Advapi32.dll\RegOpenKeyEx"
, Ptr, %RegRoot%
, Str, Key
, UInt, 0
, UInt, 0x20019 ; - read access
, "Ptr *", hKey)
CheckProcess("RegOpenKeyEx", Result)
If !Result
{
Result := DllCall("Advapi32.dll\RegCreateKeyEx"
, Ptr, %RegRoot%
, Str, Target
, UInt, 0
, UInt, 0
, UInt, 0
, UInt, 0x4 ; - create subkey
, UInt, 0
, "Ptr *", hNewKey
, UInt, 0)
CheckProcess("RegCreateKeyEx", Result)
If !Result
{
Result := DllCall("Advapi32.dll\RegCopyTree"
, Ptr, hKey
, UInt, 0
, Ptr, hNewKey)
CheckProcess("RegCopyTree", Result)
If !Result
{
DllCall("Advapi32.dll\RegCloseKey"
, Ptr, hKey)
RegDelete, % RegRoot, % Key
CheckProcess("RegCloseKey", Result)
DllCall("Advapi32.dll\RegCloseKey"
, Ptr, hNewKey)
Return, Result = 0
}
Else
{
DllCall("Advapi32.dll\RegCloseKey"
, Ptr, hNewKey)
RegDelete, % RegRoot, % Target
CheckProcess("RegCloseKey", Result)
DllCall("Advapi32.dll\RegCloseKey"
, Ptr, hKey)
Return, Result = 0
}
}
DllCall("Advapi32.dll\RegCloseKey", Ptr, hKey)
}
Return, Result = 0
}
CheckProcess(Name, Result)
{
If Result
MsgBox,,, % Name " function is failed`ncode error: "Result, 2
Else
MsgBox,,, % Name " function is success", 2
}
If Result
MsgBox,,, Renamed, 1
Else
MsgBox,,, Fail, 1
ExitApp