Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem s registrima kod startupa (c++ builder)

[es] :: C/C++ programiranje :: Problem s registrima kod startupa (c++ builder)

[ Pregleda: 2876 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

explorer-1

Član broj: 98573
Poruke: 102
*.adsl.net.t-com.hr.



Profil

icon Problem s registrima kod startupa (c++ builder)22.02.2007. u 17:43 - pre 208 meseci
Što ovdje ne valja ?

Code:

        TRegistry *registar = new TRegistry;
        registar->RootKey = HKEY_CURRENT_USER;
        registar->OpenKey("Software\\Microsoft\Windows\\CurrentVersion\\Run", true);
        try{
                if(CheckBox2->Checked == true){
                          registar->DeleteValue("Program");
                          registar->WriteString("Program", Application->ExeName);
                }
                 else {
                 registar->DeleteValue("Program");
                 }
        }
        __finally{
        {
                delete registar;
                }
        }
 
Odgovor na temu

explorer-1

Član broj: 98573
Poruke: 102
*.adsl.net.t-com.hr.



Profil

icon Re: Problem s registrima kod startupa (c++ builder)22.02.2007. u 20:29 - pre 208 meseci
Ok sad samo to rješio no novi problem.
Taj exe za sobom viče neke fajove, i sad na startupu on to ne učita. Hmm... u čemu je problem ?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem s registrima kod startupa (c++ builder)23.02.2007. u 08:18 - pre 208 meseci
Nisam razumeo ovo poslednje. Objasni detaljnije.

Što se tiče autostarta, ja koristim otprilike ovakav kod:

(obrati pažnju na navodnike oko imena fajla: ParamStr(0), tj. Application->ExeName,
mislim da ako ih nema to može stvoriti probleme ako je putnja sa blankovima)

Code:

bool TNekiForm::HandleAutostart( bool Action ) // <--- hoćeš/nećeš, tj. kod tebe CheckBox2->Checked
{
   bool SystemOk = true;

   TRegistry *pReg = NULL;

   AnsiString AUTOSTART = "\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
   AnsiString KEY = "naziv programa";
   try
   {
      try
      {
         pReg = new TRegistry;
         pReg->RootKey = HKEY_LOCAL_MACHINE; // <--- Ovo je kod tebe HKEY_CURRENT_USER
         if ( Action )
         {
            if ( pReg->OpenKey( AUTOSTART, true ) )
               pReg->WriteString( KEY, "\"" + ParamStr(0) + "\"" );
            else
               SystemOk = false;
         }
         else
         {
            if ( pReg->OpenKey( AUTOSTART, true ) )
               SystemOk = pReg->DeleteValue( KEY );
            else
               SystemOk = false;
         }
      }
      catch ( const Exception &e )
      {
         SystemOk = false;
      }
   }
   __finally
   {
      if ( pReg )
      {
         pReg->CloseKey();
         delete pReg;
      }
   }
   return ( SystemOk );
}

 
Odgovor na temu

explorer-1

Član broj: 98573
Poruke: 102
*.adsl.net.t-com.hr.



Profil

icon Re: Problem s registrima kod startupa (c++ builder)23.02.2007. u 10:41 - pre 208 meseci
Pa ni sam zapravo nisam siguran što se dogodi. Pojavi se tray ikona i to sve, no nema programa. Program inače učitava jednu settings datoteku u kojoj piše koji skin mora učitati. Kad se windowsi dignu, tray ikon je dolje, no program se ne vidi (radi se o analognom satu) - pretpostavljam da se ne učitaju te datoteke.

Budem probao s tvojim kodom - no možeš li mi malo pojasniti što se u pojedinom isječku događa - jer glupo mi je c/p, hito bi to razumjeti tak da mogu sam znati što točno treba napisati. (ako ti se da)
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem s registrima kod startupa (c++ builder)23.02.2007. u 11:06 - pre 208 meseci
Citat:

Pojavi se tray ikona i to sve, no nema programa.

kako misliš nema programa? Nema ga u status baru ili...
Tray ikona zapravo *nije* fizička zamena za program. Programi se zapravo i ne minimizuju u tray,
nego je to prigodna varka. Na jednoj strani praviš tray ikonu, a na drugoj skrivaš program. Moraš
sam da dodaš sav kod i logiku, kad želiš da se forma pojavi ili sakrije.

Citat:

Program inače učitava jednu settings datoteku u kojoj piše koji skin mora učitati.

Ovo je sasvim OK. Samo pazi da pri učitavanju, daš PUNU putanju do datoteke.

Citat:

Kad se windowsi dignu, tray ikon je dolje, no program se ne vidi (radi se o analognom satu) - pretpostavljam
da se ne učitaju te datoteke.

Da li se datoteke učitavaju ili ne učitavaju, tvoja je odgovornost da proveriš. Prosto stavi neki
ShowMessage(putanja_fajl) da se uveriš da se datoteka sa tim nazivom traži na pravom mestu,
zatim proveri povratnu vrednost Handle-a datoteke da li je ispravna i sl.

Citat:

Budem probao s tvojim kodom - no možeš li mi malo pojasniti što se u pojedinom isječku događa - jer glupo mi
je c/p, hito bi to razumjeti tak da mogu sam znati što točno treba napisati. (ako ti se da)


bool TNekiForm::HandleAutostart( bool Action ) // <--- hoćeš/nećeš, tj. kod tebe CheckBox2->Checked
Postoji povratna vrednost bool iz prostog razloga da se sazna da li je operacija uspela. Mnogi AV, AS i Firewall
programi su podešeni da blokiraju upise u pojedine delove Registry-ja. Slično tome, i pojedini Restricted Useri
na XP-u ne mogu upisivati na pojedina mesta. To bi trebalo svakako proveriti.

Sve ostalo je jako slično tvom kodu, sem što je ovde malo više zategnuto da se dozna ako nešto krene
naopako, i spreči sistemske izuzetke.

Primeti ekstra navodnike kod WriteString, jer može biti problema kod putanja sa blankovima.

Takođe u mom kodu upis ide u HKEY_LOCAL_MACHINE (tj, za sve Usere).

U svakom slučaju, jako slično kodu koji si i ti dao. Ne zaboravi CloseKey() u tvom kodu.

Poz.

 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem s registrima kod startupa (c++ builder)

[ Pregleda: 2876 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.