# [C] || [Batch] Wert aus der Registry auslesen



## Steusi (29. September 2010)

Hallo Leute ich benötige einen Teilstring vom Wert eines Registry-Schlüssels.

Nur leider arbeite ich in diesem Bereich sehr selten, daher dachte ich mir eine einfach batch-Datei genügt, doch damit kann man keinen Teilstring auslesen oder?

Ich möchte mittels des MSI-Installer eine Anwendung (Opera) automatisch deinstallieren, dazu sieht meine Batch-Datei wie folgt aus:


```
regedit /E export.txt "HKEY_CLASSES_ROOT\Installer\Products"

FIND "ProductIcon" /N export.txt > product.txt
FIND "Opera" /N product.txt > opera.txt
del export.txt
del product.txt

REM ID = ********?
REM MsiExec.exe /QN /NORESTART /X ID
```

Damit komme ich zu dem Punkt das in opera.txt folgendes steht:

```
---------- PRODUCT.TXT
[21][2064]"ProductIcon"="C:\\WINDOWS\\Installer\\{18E65799-76BD-46EF-9E53-972FE5A40736}\\Opera"
```
Nur benötige ich nur den ID-String inklusive der { }-Klammern.

Da dachte ich mir, dass C mir hilft mit folgender Syntax:


> Liest einen String aus:
> 
> ```
> DWORD dwData = 256;
> ...



Aber den EintragsNamen weiß ich ja gar nicht, da unter Products ja der Ordner wie die ID lautet, welche ich suche.

Hoffe jemand kann mir weiterhelfen


----------



## deepthroat (29. September 2010)

Hi.


```
setlocal enabledelayedexpansion

for /f "usebackq" %%i in (`reg query hkcr\installer\products`) do (
  if not "%%i"=="" (
    for /f "usebackq tokens=2*" %%u in (`reg query "%%i" /v ProductIcon 2^>nul ^| findstr /i ProductIcon ^| findstr /i Opera`) do (
       set id=%%~dpv
       set id=!id:*{=!
       set id=!id:~0,-2!

       echo.!id!
    )
  )
)
```
Aber wäre es nicht sinnvoller direkt den UninstallString unterhalb von HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ zu extrahieren?

Gruß


----------



## Steusi (29. September 2010)

Danke, habe das Script bestimmt 3 mal gelesen, bevor ich verstand was du da gemacht hast, wunderbar vielen Dank 

Ja natürlich der String ist öfter in der Registry enthalten unter deinem Pfad nicht ganz, eher hier:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{18E65799-76BD-46EF-9E53-972FE5A40736}

Letztendlich ist es doch egal oder?


----------

