Registry key verwijderen

Status
Niet open voor verdere reacties.

noukie1989

Gebruiker
Lid geworden
6 feb 2010
Berichten
21
Ik ben voor mijn werk bezig met een script te schrijven voor een profielreset.

Wij werken met roaming profiles en daarvoor moet onder andere een registry key verwijderd worden.
Nu probeer ik dat via command prompt te doen, en zoek ik naar de juiste key en delete ik die. Dat werkt prima.

Maar ik wil dit graag automatisch doen, dat hij dan zoekt naar de username die ik invoer en dat hij dan automatisch de juiste key verwijderd. Heeft iemand enig idee hoe ik dit het beste kan aanpakken?

Het pad waar de key zich bevindt is:
\\Computernaam\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Profilelist\
In profilelist staan nog een aantal 'mappen'. E�n van die mappen is dus de juiste en dat is af te lezen aan Centralprofile of ProfileImagePath (zie afbeelding)Registry.PNG

Hoe kan cmd dit zoeken en dan het pad controleren?

Wat ik o.a. geprobeerd heb is:
reg query \\Computernaam\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Profilelist /f centralprofile /t reg_sz /c /e
Als resultaat kwam er dan uit dat er 0 matches gevonden zijn.

Ik kan het eventueel ook in Powershell programeren, maar daar kan ik de registry niet remote uitlezen. De rest van het script is overigens wel in powershell.

Alvast bedankt,
 
Als je /c /e meegeeft en zoekt op centralprofile ga je inderdaad 0 hits krijgen inderdaad :) er zitten namelijk hoofdletters in.
 
Haha oke, dankje voor de tip. Wist niet dat het ook hoofdlettergevoelig was. Ik ga morgen is even testen of het dan wel lukt en of ik dan verder kom. Dankje :).
 
Verder is het een goed plan / verplicht om "-tekens te zetten rondom sleutels of sleutelwaarden die spaties bevatten.
Dus dat met de tip van wampier gecombineerd:

reg query "\\Computernaam\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /f CentralProfile /t reg_sz /c /e

Hopelijk helpt dit je wat verder.
 
Dankjewel, ik ga er morgen weer eens mee spelen. Alle tips zijn welkom ;). Ik laat weten of het lukt :).
 
Het is normaalgesproken ook niet hoofdlettergevoelig.. dat doet die "/c" (/capitals functie) de "/e" is voor "exact match"
 
Ik ben er eens mee aan het spelen geweest en het is enigszins gelukt :).

Met onderstaande regel kreeg ik de gebruikersnamen te zien.
reg query "\\Computernaam\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s /f CentralProfile /t REG_SZ /c /e

Ik moest er de /s aan toevoegen om ook in subfolders te zoeken :).

Nu ben ik alleen aan het puzzelen geweest hoe ik cmd of powershell dan de juiste key kan laten kiezen voor te verwijderen. Hebben jullie enig idee?

Ik ben aan het zoeken geweest op google en dergelijke, maar kom er niet aan uit. Dit is ook de eerste keer dat ik zoiets doe en schrijf, maar wil me er graag in verdiepen :).

Alvast bedankt,
 
Waar loop je vast? het terugvinden van e key of het eigenlijke verwijderen?
 
Ik kan de key nu vinden en verwijderen gaat waarschijnlijk via reg delete. Dat gaat denk ik wel lukken.

Maar het probleem waar ik tegen aanloop is dat ik het geautomatiseerd wil hebben. Als ik dus een gebruikersnaam opgeef als variabele dat hij dan automatisch de key verwijderd met de gebruikersnaam. Ik weet alleen niet hoe ik die variabele het beste kan opgeven en hoe dat de juiste key dan gekozen wordt.

Ik heb de rest van het script in powershell geschreven, daar werkt het wel handig met variabelen. Maar voor de registry remote uit te voeren met powershell moeten er bepaalde services aan die ik niet aan mag zetten in het bedrijf hier. Dus wil ik het graag via command prompt doen omdat dat goed in powershell te combineren is.

Ik loop dus vast bij het automatisch verwijderen van de key na invoeren van de gebruikersnaam. Is hier een manier voor of is dit niet mogelijk in command prompt en moet ik hier een andere manier voor zoeken?

Alvast bedankt,
 
In principe kan het via WMI, dat ook werkt via de command prompt. De command prompt heeft echter niet meer / minder rechten dan een ander programma, dus zolang je het lokaal draait maakt de methode niet veel uit.

Voor remote access moeten altijd de juiste (minimum) services draaien. Daar veranderd de methode in principe weinig aan. Wel gebruikt bijvoorbeeld WMI de standaard remote management kanalen en kan soms wat makkelijker uitgevoerd worden.
 
Ik moet het via remote access uitvoeren helaas.
Ik kan via command prompt wel het register benaderen, maar via powershell dus niet. Vandaar dat ik het via command prompt wil doen.

Via powershell doe ik:
$cred = Get-Credential
Enter-PSSession Computernaam -Credential $cred

Ik krijg dan alleen de error dat ik geen connectie kan maken. Zie screenshot powershell.PNG

Volgens applicatiebeheer hier moeten we dan extra services aanzetten en dat is niet de bedoeling blijkt. Dus ik probeer andere manier hiervoor te zoeken :)
 
Nu ben ik iets verder gekomen :).

Via het script in deze link: http://poshcode.org/2162 kan ik de computer remote benaderen en in de registry komen van de remote computer :).
Hier ga ik nu even verder mee puzzelen en kijken of ik dan ook kan verwijderen via deze manier.
 
Het kan dan met vbscript. Dat is in principe een tussenoplossing waarna je kunt kijken
 
Ik heb de oplossing gevonden. Ik zat denk ik veel te moeilijk te denken haha.
De code die ik nu gebruik is:

$user = 'username'
(Get-wmiobject -class Win32_userprofile -computer computernaam -filter "Localpath LIKE '%$user'").Delete()

Iedereen bedankt voor het meedenken :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan