Registry Windows XP



  • Hab mich in deinen Code noch nich so reingeguckt, aber hast du das Beispiel schonmal durchgearbeitet? Und warum wertest du die Rückgabewerte von RegCreateKeyEx und RegEnumValue nicht aus?



  • So hab mal weiter in deinem Code geschaut. RegEnumValue rufst du nur mit dem Index 0 auf, zumindest in dem Code den man sehen kann. Wer sagt aber das dein Wert an Stelle 0 steht?
    In der Hilfe steth auch

    dwIndex [in]

    The index of the value to be retrieved. This parameter should be zero for the first call to the RegEnumValue function and then be incremented for subsequent calls.

    Because values are not ordered, any new value will have an arbitrary index. This means that the function may return values in any order.



  • Auch dein vergleich der Zeichenketten sieht sehr exotisch aus.



  • oneill5000 schrieb:

    So hab mal weiter in deinem Code geschaut. RegEnumValue rufst du nur mit dem Index 0 auf, zumindest in dem Code den man sehen kann. Wer sagt aber das dein Wert an Stelle 0 steht?
    In der Hilfe steth auch

    dwIndex [in]

    The index of the value to be retrieved. This parameter should be zero for the first call to the RegEnumValue function and then be incremented for subsequent calls.

    Because values are not ordered, any new value will have an arbitrary index. This means that the function may return values in any order.

    Ich übergebe doch als Index i und i wird bei jedem Schleifendurchgang um 1 erhöht(++i). Das geht solange bis RegEnumValue ERROR_NO_MORE_ITEMS zurückgibt.
    Unter Vista funktioniert es ja auch ohne Probleme.

    oneill5000 schrieb:

    Auch dein vergleich der Zeichenketten sieht sehr exotisch aus.

    Jo des stimmt. Des wird auch noch geändert.

    MFG


  • Mod

    Dieser Code setzt voraus, dass Dein Programm als Admin läuft. Unter Vista läuft es weil Dein Programm virtualisiert wird. Du hast mit Sicherheit kein Manifest gesetzt. HKLM und KEY_ALL_ACCESS hast Du nur als Admin, oder unter Vista wenn Dein Programm elevated läuft.



  • Fatal Error appears schrieb:

    Ich übergebe doch als Index i und i wird bei jedem Schleifendurchgang um 1 erhöht(++i). Das geht solange bis RegEnumValue ERROR_NO_MORE_ITEMS zurückgibt.
    MFG

    Sorry, du hast natürlich recht. Sowas übersieht man wenn man nebenbei noch arbeiten muss 😉



  • Martin Richter schrieb:

    Dieser Code setzt voraus, dass Dein Programm als Admin läuft. Unter Vista läuft es weil Dein Programm virtualisiert wird. Du hast mit Sicherheit kein Manifest gesetzt. HKLM und KEY_ALL_ACCESS hast Du nur als Admin, oder unter Vista wenn Dein Programm elevated läuft.

    Hat da jemand einen Link oder ein Beispiel?

    MFG


  • Mod

    Bitte was für ein Beispiel. Bzgl. Manifest und Vista findest Du genug Futter hier im Forum oder auf meinem Blog:
    http://blog.m-ri.de/index.php/tag/manifest/

    Werde Dir erstmal klar was Virtualisierung bedeutet unter Vista, und dann wundere Dich was wo in der Registry steht 😉



  • Martin Richter schrieb:

    Bitte was für ein Beispiel. Bzgl. Manifest und Vista findest Du genug Futter hier im Forum oder auf meinem Blog:
    http://blog.m-ri.de/index.php/tag/manifest/

    Werde Dir erstmal klar was Virtualisierung bedeutet unter Vista, und dann wundere Dich was wo in der Registry steht 😉

    Ich hab jetzt das Manifest so abgeändert, dass als level 'requireAdministrator' da steht. Aber unter Xp erkennt er den zufor geschriebenen Eintrag immer noch nicht..

    Manifest:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
          </requestedPrivileges>
        </security>
      </trustInfo>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
        </dependentAssembly>
      </dependency>
    </assembly>
    

    Mfg



  • Bist du (vollwärtiger) Administrator auf deinem XP Rechner?



  • Ja ich bin der einzigste Benutzer und ich bin Administrator.



  • Hast du denn das Beispiel vom MSDN schonmal ausprobiert, von wo ich dir den link geschickt habe? Den änderst du dann einfach noch ein wenig nach deinen Bedürfnissen ab und dann funktionierts auch.



  • Vielen Dank jetzt funkts^^



  • UNd was hast jetzt gemacht? Das Beispiel mit verwendet?



  • oneill5000 schrieb:

    UNd was hast jetzt gemacht? Das Beispiel mit verwendet?

    Meinen Code komplett gelöscht und nochmal neu nach deinem Beispiel geschrieben.:)


Anmelden zum Antworten