Тема: JScript: удаление заданного раздела реестра вместе с подразделами
JS альтернатива VBScript: удаление заданного раздела реестра вместе с подразделами
// Удаление ключа реестра (включая все вложенные)
function RegDeleteKeys(strFullPath){
function DeleteSubkeys (subKey){
var oMethod = oReg.Methods_.Item("EnumKey");
var oInParam = oMethod.InParameters.SpawnInstance_();
oInParam.hDefKey = defKey;
oInParam.sSubKeyName = subKey;
var oOutParam = oReg.ExecMethod_(oMethod.Name, oInParam);
if (oOutParam.sNames != null) {
var aNames = oOutParam.sNames.toArray();
for (var i=0, keyName; keyName = aNames[i++];) {
DeleteSubkeys(subKey + "\\" + keyName);
}
}
oReg.DeleteKey (defKey, subKey);
}
// ----------------------------------------------------------------
var aKeyPath = strFullPath.match(/^([\w_]+)\\(.+)$/);
if (!aKeyPath) return;
var aRoot = {HKEY_LOCAL_MACHINE: 0x80000002, HKLM: 0x80000002
,HKEY_USERS: 0x80000003, HKU: 0x80000003
,HKEY_CURRENT_USER: 0x80000001, HKCU: 0x80000001
,HKEY_CLASSES_ROOT: 0x80000000, HKCR: 0x80000000
,HKEY_CURRENT_CONFIG: 0x80000005, HKCC: 0x80000005}
var defKey = aRoot[aKeyPath[1]];
if (!defKey) return;
var oReg = GetObject("winmgmts:\\\\.\\root\\default:StdRegProv");
DeleteSubkeys (aKeyPath[2]);
}
В качестве параметра принимает удаляемый ключ (полностью, включая root). Например, так:
RegDeleteKeys("HKCR\\xslfile\\shell\\Open\\ddeexec");
// или так:
RegDeleteKeys("HKEY_CURRENT_USER\\Console");
// не советую запускать эти примеры не поразмыслив хорошенько ;)