Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Registry Einträge "abscannen"


7 replies to this topic

bj

bj
  • Members
  • 6 posts

Posted 25 January 2002 - 14:39

Hallo !
Ich habe das Problem, das ich nun schon vor der INstallation die Registry nach bestimmten Pfaden absuchen muss.

Wie geht das ?


Perotin

Perotin
  • Full Members
  • 407 posts

Posted 28 January 2002 - 12:20

Wenn die Pfade in einem speziellen Schlüssel gespeichert sind, verwendest Du RegDBGetKeyValueEx, wenn Du Unterschlüssel durchsuchen willst, hilft Dir RegDBQueryKey.
Aber eigentlich sollten Dir die Schlüssel und Variablen bekannt sein, die wichtige Infos für die Installation enthalten. Aus diesen kannst Du mittels RegDBGetKeyValueEx die Werte der Variablen auslesen und verarbeiten.

... oder habe ich Deine Frage komplett missverstanden?


bj

bj
  • Members
  • 6 posts

Posted 28 January 2002 - 12:38

Nein, hast Du nicht, mir geht es nur darum, wenn ich einen Pfad gesetzt habe, diesen zu überprüfen und auch gegebenenfalls zu löschen. Ich schreibe einen Pfad hinter den Betriebssystempfad. Wenn ich den Pfad lösche, kann ich ihn ja wohl nur ganz löschen, oder ?

Perotin

Perotin
  • Full Members
  • 407 posts

Posted 30 January 2002 - 15:31

Oops, ach d e r Pfad ...
Tja, in Win9x kannst Du ja eine eigene Zeile in der autoexec.bat eintragen
  SET PATH=%PATH%;<eigener Pfad>
Unter NT/2k/XP liegt das Teil in der Registry, da bleibt Dir eigentlich nur übrig, den Pfad komplett auszulesen, zB in eine Liste zu schreiben (Delimiter ";"), dann die Liste nach Deinem Pfad zu durchsuchen, wenn bei Installation nicht vorhanden hinzufügen und zurückschreiben, wenn bei Deinstallation vorhanden entfernen und zurückschreiben ...
Ist das so ungefähr das, was Du machen möchtest?

bj

bj
  • Members
  • 6 posts

Posted 30 January 2002 - 15:39

Ja, das ist in etwa so !

Doch da ich der Script-Sprache noch nicht so mächtig bin, weiß ich im moment nicht wie ich das anstellen soll.
Hast Du vielleicht ein Script-Beispiel ?


Perotin

Perotin
  • Full Members
  • 407 posts

Posted 31 January 2002 - 15:25

Code Sample
////////////////////////////////////////////////////////////////////////////////
//
//  Funktion:  DeleteFromPath
//
//     Zweck:  entfernt Pfadinformationen, die falsch sind oder
//             nicht mehr benötigt werden
//
//     Input:  STRING1 ist die zu bearbeitende DAtei, meist autoexec.bat
//             STRING2 ist ein Pfad(bestandteil), der gelöscht werden soll
////////////////////////////////////////////////////////////////////////////////
function DeleteFromPath( szFile, szString )

STRING  svReturnLine, svTemp, svNewLine;
NUMBER  nvLineNumber, nResult, nReturn;
LIST    listPath;

begin

 ParsePath( SRCDIR, szFile, PATH );
 ParsePath( szFile, szFile, FILENAME );

 nReturn = FileGrep( szFile, szString, svReturnLine, nvLineNumber, RESTART );
 while( nReturn = 0 && svReturnLine % "PATH" )
   listPath = ListCreate( STRINGLIST );
   StrGetTokens( listPath, svReturnLine, ";" );
   svNewLine = "";
   nResult = ListGetFirstString( listPath, svTemp );
   while( nResult != END_OF_LIST )
     if( 0 > StrFind( svTemp, szString )) then
       if( svTemp != "" ) then
         svNewLine = svNewLine + svTemp + ";";
       endif;
     endif;
     nResult = ListGetNextString( listPath, svTemp );
   endwhile;
   if( svNewLine != "SET PATH=%PATH%;" ) then
     FileInsertLine( szFile, svNewLine, nvLineNumber, REPLACE );
   else
     FileDeleteLine( szFile, nvLineNumber, nvLineNumber );
   endif;
   nReturn = FileGrep( szFile, szString, svReturnLine, nvLineNumber, CONTINUE );
 endwhile;

end;

Falls jemand dazu oder zu Teilen dazu Verbesserungsvorschläge hat, bitte "Bescheid" geben ...


bj

bj
  • Members
  • 6 posts

Posted 01 February 2002 - 07:51

Löscht ich damit den kompletten Pfad ? Ich hänge mich nämlich mit meiner Software hinter den NT-Pfad, und beim Uninstall wird ja dann wohl der komplette Pfad gelöscht, inkl. den von NT, oder ?

Perotin

Perotin
  • Full Members
  • 407 posts

Posted 01 February 2002 - 10:39

Kann ich Dir nicht sagen ...
Das Beispiel war für Win9x, also Pfad aus autoexec.bat entfernen. Unter NT/2k/XP wird der Registry-Eintrag für den Pfad genommen, in eine Liste geschrieben und dabei nach ";"  getrennt. Dann schaue ich mir die Liste an, vergleiche die Einträge mit dem, was ich erwarte und wenn ich einen von mir geschriebenen Wert finde, entferne ich ihn aus der Liste. Anschliessend wird die Liste wieder zurückgeschrieben und der Pfad in der Registry aktualisiert.

Das lässt sich per separatem Script machen (unter Umgehung der automatischen Deinstallation) oder per dll, die dann zwei Funktionen bereitstellt, in denen diese Verarbeitung durchgeführt werden kann.
Aber dazu gibt es schon eine ganze Reihe Threads (und ich habe davon keine Ahnung, es jedenfalls noch nicht ausprobiert ...).