What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » Scripting » RegDeleteTree

RegDeleteTree
Author: Message:
Suxsem
Junior Member
**


Posts: 66
Joined: Mar 2008
O.P. RegDeleteTree
Hi!
if I use Shell.RegDeleteTree function script return an error...
if I use Shell.RegDelete function I can't delete e subkey of a key...
how can I do?
Thank, bye!
06-21-2008 02:41 PM
Profile E-Mail PM Find Quote Report
Matti
Elite Member
*****

Avatar
Script Developer and Helper

Posts: 1646
Reputation: 39
31 / Male / Flag
Joined: Apr 2004
RE: RegDeleteTree
You can use SHDeleteKey from the shlwapi library:
code:
// Registry key locations
var HKEY_CLASSES_ROOT = 0x80000000;
var HKEY_CURRENT_USER = 0x80000001;
var HKCU = HKEY_CURRENT_USER;
var HKEY_LOCAL_MACHINE = 0x80000002;
var HKEY_USERS = 0x80000003;

/**
* Registry_DeleteTree
* lKeyLocation: One of the HKEY_* constants, such as HKEY_CURRENT_USER
* sKey: Path of the key to delete
*/
function Registry_DeleteTree(lKeyLocation, sKey){
   return Interop.Call('shlwapi.dll', 'SHDeleteKeyW', lKeyLocation, sKey) === 0;
}

//EXAMPLE
var RegistryPath = MsgPlus.ScriptRegPath.substr(5); //Remove "HKCU\" prefix
Registry_DeleteTree(HKEY_CURRENT_USER, RegistryPath + "\\KeyToDelete");
For more information about this function, go to the MSDN page of SHDeleteKey.
Plus! Script Developer | Plus! Beta Tester | Creator of Countdown Live | Co-developer of Screenshot Sender 5

Found my post useful? Rate me!
06-21-2008 06:34 PM
Profile E-Mail PM Web Find Quote Report
CookieRevised
Elite Member
*****

Avatar

Posts: 15519
Reputation: 173
– / Male / Flag
Joined: Jul 2003
Status: Away
RE: RegDeleteTree
quote:
Originally posted by Suxsem
if I use Shell.RegDeleteTree function script return an error...
Because there is no such function or method.
The three existing function methods are:
    WshShell.RegDelete
    WshShell.RegWrite
    WshShell.RegRead

quote:
Originally posted by Suxsem
if I use Shell.RegDelete function I can't delete e subkey of a key...
how can I do?
Yes you can. But that subkey must be empty; it can not contain other subkeys. You must remove the lowest subkey first and working your way up the tree, if you want to keep on using those build-in registry object functions.

Also, specify a key-name by ending the string with a final backslash and leave the final backslash off to specify a value-name.

eg:
this will remove the value 'MindReader':
WshShell.RegDelete("HKCU\\Software\\ACME\\FortuneTeller\\MindReader");

this will remove the key 'FortuneTeller':
WshShell.RegDelete("HKCU\\Software\\ACME\\FortuneTeller\\");

All this is also explained in the Windows Scripting documentation which you can download from the Official Script Database.

-------

Otherwise, use the Windows API directly like Matikke showed.

;)

This post was edited on 06-24-2008 at 04:24 AM by CookieRevised.
.-= A 'frrrrrrrituurrr' for Wacky =-.
06-21-2008 06:46 PM
Profile PM Find Quote Report
Suxsem
Junior Member
**


Posts: 66
Joined: Mar 2008
O.P. RE: RegDeleteTree
Thank Mattike!!!
06-23-2008 11:15 AM
Profile E-Mail PM Find Quote Report
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On