Regestry



  • das wirst du doch wohl noch selber hinbekommen -> Seite 2 "Registry"



  • hi..ja aber was brauch i nun alles unterschlüssel? welche werte muss ich reinschreiben??? usw.

    cu surf.



  • Du fügst einfach unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run den Pfad zu der zu startenden Anwendung hinzu der Name ist afaik egal 😉



  • //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender) 
    {
    //------Schlüssel anlegen------
    String SchluesselName = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
    HKEY rHandle;
    long Wert = RegCreateKeyEx(HKEY_CURRENT_USER,SchluesselName.c_str(), 0, 0,
                            REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &rHandle, 0;
    if (Wert != ERROR_SUCCESS)
        {
            ShowMessage("Es ist ein Fehler aufgetreten! Der Schlüssel wurde nicht geöffnet!");
            return;
        }
    //------und Schließen------
    RegCloseKey(rHandle); 
    }
    //---------------------------------------------------------------------------
    

    wo tu ich da den pfad für die zu startende anwendung hin?
    name der datei brauch i nicht?? oder kann man a dazu tun?

    was ist mit HKEY_CURRENT_USER??
    wenn ich benutzer a bin und dann mich mit benutzer b einlogge dann wird das nicht funktionieren? hkey_admin geht das?

    cu surf.



  • Wen du eh mit dem BCB arbeitest, warum nimmst du dann nicht gleich TRegistry? 😕



  • hmm...funzt der code siehe vorher?

    cu surf.



  • Hä?



  • Du hast dir den FAQ-Thread immer noch nicht angeschaut, oder 😞



  • hab ich angeschaut!!

    HKEY hKey; 
    RegCreateKeyEx(HKEY_LOCAL_MACHINE,"Programm",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,0);
    
    BYTE cString[]="C:\Temp\Programm.exe"; 
    RegSetValueEx(hKey,"Programm",0,REG_SZ,cString,strlen(cString)+1);
    

    was sagst du dazu?

    -------------------------------------------------------------------------------
    info nebenbei:

    hab mit der msconfig da mal geguckt:
    Systemstartelement Befehl
    msmsgs "C:\Programme\Messenger\msms...

    Pfad
    HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    wie is das bei HKEY_LOCAL_MACHINE...kann ich da auch schreiben wenn ich kein admin bin oder muss ich mich als admin einloggen?

    cu



  • Du hast meine Frage nicht beantwortet!!!



  • ich kenn mich mit registry nicht aus!! und tregistry sagt nur schon gar nix...

    passt das nun?



  • Mach, was du willst. Wenn du dich mit deiner Entwicklungsumgebung kein Stück auskennen willst... meinetwegen. Aber schreibe einmal "TRegistry" in deinen Quelltext-Editor im C++Builder, gehe mit dem Mauszeiger darüber, klicke einmal, so dass der Cursor im Text blinkt, und drücke F1. Du wirst staunen, was da so steht. Du brauchst dann nur sowas zu schreiben:

    TRegistry* reg = new TRegistry;
    reg->RootKey = HKEY_LOCAL_MACHINE;
    reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
    reg->WriteString("Programm", "C:\\Temp\\Programm.exe");
    reg->CloseKey();
    delete reg;
    


  • thx für deine hilfe...........

    schau mal:

    das geht nicht:

    http://www.tipps.delphi-source.de/system/tut20001003-2.shtml

    ich bin hier nicht immer als admin eingeloggt!
    was soll ich machen...???will nicht immer als admin einloggen um in die registry zu schreiben!!!!

    cu



  • Natürlich geht das nicht:

    www.tipps.delphi-source.de schrieb:

    Folgendermaßen muss man vorgehen, wenn man nur Lesezugriff haben will

    Du musst schon richtig lesen. Du willst doch etwas in die Registry schreiben, also Schreibzugriff haben.



  • da steht auch:
    Unter Windows NT ist es "normalen" Anwendern ohne Administrator-Rechte nicht erlaubt, auf den HKEY_LOCAL_MACHINE-Schlüssel der Registry schreibend zuzugreifen

    aber wenn ich kein admin bin hab ich ja die rechte nicht was in die registry zu schreiben oder? wenn regedit auch nicht zugelassen wird!??

    cu





  • wenn ich wüsste was da genau gemacht wird*g*
    dann wäre ich zufrieden...hmm...
    scheißt grösser zu sein das problem als gedacht.....;-(



  • Lies dir das doch mal genau durch. Dann wirste's auch schaffen!



  • hab 2 varianten:

    // In die Registry schreiben: mit TRegistry
    
       TRegistry* reg = new TRegistry;
       reg->RootKey = HKEY_LOCAL_MACHINE;
       reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
       reg->WriteString("Programm", "C:\\Temp\\Programm.exe");
       reg->CloseKey();
       delete reg;  
    
    // In die Registry schreiben: mit Winapi
       HKEY hkey;
       HKEY KEY = HKEY_LOCAL_MACHINE;
       char place[100]= {"Software\\Microsoft\\Windows\\CurrentVersion\\Run"};
       char name[100]= {"Programm"};
       char value[100]= {"C:\\Temp\\Programm.exe"};
    
       RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey);
       RegSetValueEx(hkey, name, 0, REG_SZ, (BYTE *)value, strlen(value));
       RegCloseKey(hkey);
    

    so wie kann ich rausfinden das es den schlüssel schon gibt....will nicht immer überschreiben!!!

    cu



  • ich meine, du müsstest ihn dazu versuchen auszulesen: RegQueryValueEx 🙄


Anmelden zum Antworten