Die Registry



  • Was das ganze machen soll ist mir zwar nicht klar, aber wenn du nen String schreiben willst brauchst du REG_SZ anstelle von REG_DWORD!



  • Ich will die inhalte der Systemsteuerung verstecken...
    das macht man in dem man unter dem Schlüssel
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowCpl
    Werte erstellt. Diese Werte haben als namen 1,2,...,x und als inhalt bekommen die zum beispiel System oder Anzeige. Damit verschwinden die beiden Icons aus der Systemsteuerung.
    Nun wollte ich die Forschleife benutzen um die Werte zu erstellen. Das Array wollte ich benutzen um den Inhalt einzustellen. und das ganze halt mit einer schleife. Ich wollte nicht 26mal den Code mit hand erstellen...

    Ich hoffe ich konnte dir mit meine neuen erläuterung helfen...

    cya Laubi

    Ps: Hab den DWORD in SZ geändert, läuft aber immer noch nich...sagt immernoch das mit dem 2. Parameter...

    [ Dieser Beitrag wurde am 16.01.2003 um 14:33 Uhr von Laubfrosch editiert. ]



  • Du musst aus deinem i erst einen String machen - z.B. mit wsprintf oder itoa



  • hi flender...

    ich schnall die funktion nich...hab auch schon bei msdn nachgeschaut. hab nur herausgefunden, dass das die windoof version von sprintf ist 😕 ...hilft mir aber nicht weiter...könntest evtl. mal nen kleinen beispiel code posten *bettel*

    danke
    cu Laubi



  • versuch's mal so:

    char buffer[3];
    itoa(i,buffer,10);
    

    Die 10 gibt hierbei das Zahlensystem (die Basis) an - hier Dezimal!



  • funzt leider immer noch nicht 😞

    hast du noch ne andere Idee?
    cu



  • ich glaub ich habe die Fehler gefunden...es lässt sich zumindes compilieren..
    aus i hab ich (char *)i gemacht und das Array habe ich von char auf const unsigned char geänder...

    danke für die Hilfe

    CU Laubi



  • du musst dann statt dem i in den Funktionsaufruf natürlich auch buffer einsetzen! 😉



  • Versuchs mal so:

    HKEY hKey;
    int i=0;
    char cSysString[2][30]={"Anzeige","Automatische Updates"}
    
    RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\DisallowCpl",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
    
    for(i=1;i<=26;i++)
    {
        char sztemp[3]="";
        itoa(i,sztemp,10);
        RegSetValueEx(hKey,sztemp,0,REG_SZ,(BYTE*)cSysString[i],strlen(cSysString[i]));
        sztemp[0]='\0';
    }
    RegCloseKey(hKey);
    

    [ Dieser Beitrag wurde am 16.01.2003 um 17:31 Uhr von BiGFusel editiert. ]

    [ Dieser Beitrag wurde am 16.01.2003 um 17:32 Uhr von BiGFusel editiert. ]



  • hiho BiGFusel

    ich hab mal dein code getestet...aber der schreibt leider auch keine Werte...
    wenn ich die werte einzelnt ohne schleife eingebe funzt das ding auch nicht

    wenn einer noch ne idee hat, bitte posten *verzweifeltsein*

    cu Laubi



  • > for(i=1;i<=26;i++)
    Wieso 26??? Das muss doch so heißen:
    for(int i = 0;i < 2;i++)
    (Da muss man aber das "int i = 0;" oben weglassen)

    Wenn das immer noch nicht funktioniert, probier mal SHSetValue: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/shlwapi/registry/shsetvalue.asp

    cya 🙂



  • Also bei mir funktioniert sein Code - zumindest schreibt er was (Müll)! 😉
    Dies liegt aber daran, dass deine Schleife bei 0 beginnen muss und nur bis 1 laufen darf, da du ja auch nur zwei Stings in deinem Array hast!
    Außerdem fehlt nach der } des Arrays der Strichpunkt :p

    Da war wohl jemand schneller 😞

    [ Dieser Beitrag wurde am 16.01.2003 um 18:22 Uhr von flenders editiert. ]



  • @flenders: Macht nix, deine Erklärung ist dafür ausführlicher :)!

    cya 🙂



  • Ja ihr habt alle beide recht, er meint ja nur 2 Strings !? 🙄



  • dass mit den zwei elementen mit im array war nen beispiel
    komplet ist es so:

    char cSysString[26][30]={
        "Anzeige",
        "Automatische Updates",
        "Benutzer und Kennworter",
        "Datum/Uhrzeit",
        "Drucker",
        "EingabeHilfen",
        "Energieoptionen",
        "Geplante Vorgänge",
        "Hardware",
        "Internetoptionen",
        "Ländereinställungen",
        "Mail",
        "Maus",
        "Netzwerk- und DFÜ-Verbindung",
        "NVIDIA nView-Desktop-Manager",
        "Ordneroptionen",
        "Scanner und Kameras",
        "Schriftarten",
        "Software",
        "Sounds und Multimedia",
        "Spieloptionen",
        "Symantec LiveUpdate",
        "System",
        "Tastatur",
        "Telefon- und Modemoptionen",
        "Verwaltung"};
    

    da ich 26 elemente habe lass ich die schleife 26 mal durchlaufen...
    mit dem SHSetValue() funzt das auch nich...
    Der Compiler gibt zwar keine Fehlermeldung aber die einträge in der regis werden nicht erstellt

    Ich hab hier mal ne url, da steht was ich machen will
    [url] http://www.windows-tweaks.info/html/systemsteuerung2.html [/url]
    könnt ja mal reinschauen

    cu Laubi

    [ Dieser Beitrag wurde am 16.01.2003 um 18:48 Uhr von Laubfrosch editiert. ]



  • Sorry,

    aber auch Dein Link funzt nicht!



  • Bei mir funzt er...

    cya 🙂



  • jetzt auch bei mir. Und was willst Du nun machen, die Werte löschen oder wie ?



  • ich will die werte neu erstellen...
    also eine neue Zeichenfolge z.B soll die 1 heissen und den wert System annehmen.
    ich dachte das hätte ich hier schonmal erwähnt. wenn nicht dann mach ich es eben jetz nohmal..

    [ Dieser Beitrag wurde am 16.01.2003 um 19:14 Uhr von Laubfrosch editiert. ]



  • ich will die werte neu erstellen...

    Dann mach das doch. BigFusels Schnippsel ist doch auch schon fast richtig (bei der Größenangabe fehlt die abschließende 0). Außerdem hantiert Ihr alle mit vielen Zahlen rum. Ich würde das doch ein wenig anders machen:

    const char* cSysString[]=
    {
        "Anzeige",
        "Automatische Updates",
        "Benutzer und Kennworter",
        "Datum/Uhrzeit",
        "Drucker",
        "EingabeHilfen",
        "Energieoptionen",
        "Geplante Vorgänge",
        "Hardware",
        "Internetoptionen",
        "Ländereinställungen",
        "Mail",
        "Maus",
        "Netzwerk- und DFÜ-Verbindung",
        "NVIDIA nView-Desktop-Manager",
        "Ordneroptionen",
        "Scanner und Kameras",
        "Schriftarten",
        "Software",
        "Sounds und Multimedia",
        "Spieloptionen",
        "Symantec LiveUpdate",
        "System",
        "Tastatur",
        "Telefon- und Modemoptionen",
        "Verwaltung"
    }; 
    
    char szMyValue[] = "123";
    
    HKEY hKey;
    int  x;
    
      RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Test", NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
    
      for(x = 0; x < (sizeof(cSysString) / sizeof(cSysString[0])); ++x)
          RegSetValueEx(hKey, cSysString[x], 0, REG_SZ, (BYTE*)szMyValue, (strlen(szMyValue) + 1) * sizeof(szMyValue[0]));
    
      RegCloseKey(hKey);
    

    Das ist aber, wenn man Deinem Link glauben schenken darf, ein unmögliches Unterfangen. Man kann sich nicht einfach ein Programm schreiben, da man Bordmittel benutzen muß. Zitat von der Seite:

    Leider ist dies nicht ohne Windows 2000 Bordmitteln möglich.

    Dann verwende doch auch Bordmittel:
    Start -> Ausführen -> gpedit.msc

    Jetzt kannst Du unter
    Benutzerkonfiguration -> Administrative Vorlagen -> Systemsteuerung

    alles schöne verändern. Dazu mußt Du Dich lediglich als Administrator anmelden.

    SCNR


Anmelden zum Antworten