Announcement

Collapse
No announcement yet.

In Registry schreiben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • In Registry schreiben

    Hallo,

    folgendes Problem: ich möchte in einem Registrywert eine bestimmte Zeichenfolge ändern (z. B. ABC).
    Da die Schlüssel schon bekannt sind, habe ich diese schon in reg-Dateien exportiert. z.B

    --> Schlüssel xyz --> Wert ABC\IWAM_ABC

    In der exportierten reg-Datei steht aber auf einmal

    --> Schlüssel xyz --> Wert ABC\\IWAM_ABC

    Warum wird aus einem \ ein \\ ?

    Wie muss die Zeile zum überschreiben nun heissen:

    Regist.WriteString('Schlüssel',Variable+'\IWAM_'+V ariable);
    oder
    Regist.WriteString('Schlüssel',Variable+'\\IWAM_'+ Variable);

    Die zweite Variante sieht irgendwie logischer aus. Woher also der \\ ?

    Gruss Matthias Dames

  • #2
    Hallo
    ich würde sagen ohne den Doppelstrich, aber zeige doch mal den Registrie eintrag. Doppelte // sind "glaube ich " bezug auf den root Eintrag.
    Ich schreibe einiges in die Registrie und benutze nie den // zum eintragen.

    Gruß Joachi

    Comment


    • #3
      Hallo Matthias,<br>
      <br>
      wie Du das gemacht hast ist das schon völlig richtig.<br>
      Ein Backslash (\) genügt.<br>
      Die Erklärung ist ganz einfach, und Du kannst das auch selber einmal<br>
      ausprobieren.<br>
      In einer .reg Datei werden bei Datenwerten zwei Backslash (\\)verwendet,<br>
      da ein einzelner das Kennzeichen dafür ist, dass die aktuelle Zeile<br>
      in der nächsten fortgesetzt wird.<br>
      Bei den Angaben des Keys ist das nicht notwendig, da dieser durch<br>
      eckige Klammern begrenzt wird.<br>
      Als Beispiel für die Verwendung als Zeilenfortsetzungskennung (kann<br>
      man im Deutschen nicht tolle Worte konstruieren ?), kannst Du mal<br>
      auf einem Rechner mit MS Office einmal den Key für Word exportieren.<br>
      Der enthält mit Sicherheit einen längeren binären Wert, so dass<br>
      dieser sich in der .reg Datei auf mehrere Zeilen verteilt.<br>
      Jeder andere ausreichend lange (binär) Wert tuts natürlich auch.<br>
      Allgemein:<br>
      Wenn ein Zeichen eine Sonderfunktion einnimmt, ist es oft üblich die<br>
      Verwendung dieses Zeichens dadurch zu ermöglichen, dieses zweimal<br>
      hintereinander zu verwenden.<br>
      Und der Backslash nimmt bei .reg Dateien eine solche Funktion ein.<br>
      <br>
      Eine Korrektur hätte ich übrigens noch für Dein Beispiel:<br>
      Bei WriteString ist der erste Paramter kein Schlüssel, sondern der<br>
      Name des zu schreibenden Wertes, und der zweite der Wert selber.<br>
      Den Schlüssel müsstest Du erst mit (z.B.) OpenKey öffnen, und kannst<br>
      dann den Wert dort hineinschreiben.<br>
      Wenn Du Regedit benutzt, stehen links in der Baumdarstellung nur die<br>
      Schlüssel, und rechts, in der Liste auf der linken Seite die Namen<br>
      der Werte (incl. Typkennung) gefolgt von den eigentlichen Werten.<br>
      Die Writexxx und Readxxx Funktionen beziehen sich auf die Liste.<br>
      <br>
      Ein Tip noch, falls Du je einmal eine .reg Datei importieren willst.<br>
      Immer darauf achten, dass die Datei HINTER der letzten Zeile endet,<br>
      und nicht am Ende der letzten Zeile, ansonsten wird die letzte Zeile<br>
      nämlich nicht gelesen.<br>
      Das gilt nicht für exportierte Dateien, aber bei editierten, bzw.<br>
      'selbstgebastelten' kann so etwas schon vorkommen.<br>
      <br>
      Ciao<br>
      Chri

      Comment


      • #4
        Hallo,

        unter http://spotlight.de/zforen/dlp/m/dlp-997979890-30987.html habe ich die Frage auch gestellt. Da steht der Registryeintrag und die Procedure genauer. Nach den Antworten werden aus einem einfachen \ beim Export in eine reg-Datei doppelte \\. Warum das so ist weiss ich nicht.

        Gruss Matthias Dame

        Comment


        • #5
          Hi Joachim,<br>
          <br>
          Du meinst mit \\ wahrscheinlich die Kennzeichnung für einen Rechnernamen.<br>
          Wenn Du einen Registry Eintrag mit einem solchen exportierst, so hast <br>
          Du in der .reg Datei vier hintereinander \\\\.<br>
          <br>
          Ciao<br>
          Chri

          Comment


          • #6
            Hallo Christian,

            Danke für die ausführliche Antwort. Habe ich erst gar nicht gesehen.

            Der exportierte Schlüssel in der reg-Datei:

            [HKEY_CLASSES_ROOT\AppID\{9C151367-4F62-11D5-BA59-0030050ACCA9}]
            "RunAs"="CTL1\\IWAM_CTL1"

            CTL1 war der alte Rechnername der noch in der Registry stand.
            Der sollte auf den neuen geändert werden.

            Im Registryeditor war er aber so zu lesen:

            "RunAs"="CTL1\IWAM_CTL1"

            Da mir das nicht gleich mitbekam, durch das kopieren über die Zwischenablage, habe ich nicht nur den Rechnernamen geändert, sondern zusätzlich noch ein \ hinzugefügt. Aber vier \ sind es nicht geworden.

            Gruss Matze I

            Comment


            • #7
              Hi Matze II,<br>
              <br>
              bei dem Punkt bin ich dann wieder nicht ausführlich genug gewesen <br>
              Wenn Du über Netzwerklaufwerk verbinden den Rechner und Share angibst,<br>
              dann in der Form:<br>
              \\Rechnername\Sharename<br>
              <br>
              Wenn Du dann in der Registry danach suchst, und dann den Key in dem<br>
              die Werte stehen exportierst, erhältst Du als Wert<br>
              \\\\Rechnername\\Sharename<br>
              in der .reg Datei.<br>
              Die vier \ meinte ich.<br>
              Das Problem mit dem Dateiende am Ende der letzten Zeile scheint unter<br>
              W2K übrigens nicht mehr zu bestehen.<br>
              <br>
              Ciao<br>
              Chri

              Comment

              Working...
              X