Avatar billede fun22 Nybegynder
04. juli 2002 - 13:32 Der er 24 kommentarer og
1 løsning

fra 95, 98 og me --> NT

Jeg har i mit program en kode der ser sådan ud:

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  if start.Checked = True then
  begin
    try
      Reg.RootKey := HKEY_CURRENT_USER;
      Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\RunOnce', False);
      Reg.WriteString(Application.Title, Application.ExeName);
    finally
      Reg.CloseKey;
      Reg.Free;
      inherited;
     
    end;
  end;
end;

Og den virker fint i 95, 98 og me, men jeg skal også bruge den i xp, 2000 og nt. Hvordan gør man det? Kan man bruge den samme kode eller skal man have to?

Mvh
Jesper
Avatar billede martinlind Nybegynder
04. juli 2002 - 13:46 #1
Man flytter evt. reg'en til HKEY_LOCAL_MACHINE

/Martin
Avatar billede martinlind Nybegynder
04. juli 2002 - 13:48 #2
Men det du har lavet vil også virke på w2k, hvis brugeren har retighedder til at skrive i Reg. basen
Avatar billede fun22 Nybegynder
04. juli 2002 - 13:53 #3
Det skal være sådan at den kan skrive i reg-databasen ligemeget om han/hun er administrator eller ej
Avatar billede martinlind Nybegynder
04. juli 2002 - 13:58 #4
Så prøv med Local_Machine, men så skal du huske at det er "globalt" på maskinen, dvs alle brugere.
Avatar billede borrisholt Novice
04. juli 2002 - 13:58 #5
Det har ikke noget at gøre med ADMIN eller ej. I NT/2k/Xp  kan mman fratage brugeren rettighedder til at skrive i REG'e,. And there aint a flying fuck you can do about it !

Jens B
Avatar billede martinlind Nybegynder
04. juli 2002 - 14:09 #6
Løsning : Lav en genvej i brugerens startup bib. i stedet for at bruge Reg. basen.

FUCK ADMIN's !!!


/Martin
Avatar billede martinlind Nybegynder
04. juli 2002 - 14:09 #7
JB >> Fik du min "pakke" :)
Avatar billede fun22 Nybegynder
04. juli 2002 - 14:20 #8
Hvad skal der så stå i denne linie?

Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\RunOnce', False);
Avatar billede borrisholt Novice
04. juli 2002 - 14:23 #9
martin >> Ja tak, og du har liv i din 2k igen !?

Jens B
Avatar billede borrisholt Novice
04. juli 2002 - 14:23 #10
Jeg var lige ved at pille med min egen ICQ Client

Jens B
Avatar billede martinlind Nybegynder
04. juli 2002 - 14:27 #11
JB >> Yes, det var rart :)

Fun22 >> Du skal finde en comp. på nettet ( evt. på JB's hjemme side www.borrosholt.com ) også skal du bruge den til at oprette / slette genvejen og fuldstændig droppe den Registry kode du har lavet.
Avatar billede fun22 Nybegynder
04. juli 2002 - 14:41 #12
Den side er da ikke til meget nytte.... Man kan jo ikke se hvad der står. Og forresten så er adressen http://borrisholt.com
Avatar billede martinlind Nybegynder
04. juli 2002 - 14:50 #13
En lille tyrk fejl.

men du kan finde det du søger her http://borrisholt.com/MSIE.htm
Avatar billede fun22 Nybegynder
04. juli 2002 - 14:58 #14
Det er jo så småt at man umugligt kan se hvad der står.. Kan du ikke bare forklare mig hvordan man bruger reg-databasen i nt
Avatar billede martinlind Nybegynder
04. juli 2002 - 14:58 #15
Avatar billede martinlind Nybegynder
04. juli 2002 - 15:00 #16
Som JB skrev kan du komme ud for at du ikke kan skrive i den, så hvis du prg. skal være af en nogenlunde standart vil jeg anbefale dig at droppe reg. basen hvis du VIL bruge den, gør du som jeg skrev tidligere.

/Martin

PS. JB's side er faktisk en kilde til mange gode ting.
Avatar billede fun22 Nybegynder
04. juli 2002 - 15:05 #17
Hvordan får du den til at lægge linket ind i start mappen under start-->programmer-->start
Avatar billede martinlind Nybegynder
04. juli 2002 - 15:09 #18
Man kan sikker få sti'en via et API kald, jeg har ikke prøvet det, men prøv at så i hjælpen under "Systemdir" eller lign.
Avatar billede borrisholt Novice
04. juli 2002 - 15:15 #19
prøv den her :

function GetFolderLocation(const FolderType: string): string;
{ Retrieves from registry path to folder indicated in FolderType }
begin

  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;
      OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
      Result := ReadString(FolderType);  { Get path for specified folder }
      CloseKey;
    finally
      Free;
    end;
end;
Jens B
Avatar billede borrisholt Novice
04. juli 2002 - 15:16 #20
:-)
Avatar billede fun22 Nybegynder
04. juli 2002 - 15:25 #21
a' fatter ikke en skid.. Kan i ikke bare lave en kode som den kode der er allerøverst på siden tilat skrive i reg-database i nt, og så går vi ud fra at brugeren har adgang til den reg-database...!
Avatar billede martinlind Nybegynder
04. juli 2002 - 15:31 #22
cut'n'paste :

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  if start.Checked = True then
  begin
    try
      Reg.RootKey := HKEY_CURRENT_USER;
      Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\RunOnce', False);
      Reg.WriteString(Application.Title, Application.ExeName);
    finally
      Reg.CloseKey;
      Reg.Free;
      inherited;
     
    end;
  end;
end;

Det virker fint i NT/2K osv. det er ikke koden der er problemet hvis det ikke virker er det et rettigheds problem
Avatar billede martinlind Nybegynder
04. juli 2002 - 15:32 #23
en lille ændring skal der dog lige laves, kom jeg til at se dit kald til inherited skal du ikke bruge til noget, med mindre du har nedarvet dit Button1Click.
Avatar billede fun22 Nybegynder
04. juli 2002 - 16:24 #24
Jeg har fået det til at virke!!! Men lige et spørgsmål mere.. Hvordan sletter man det igen fra reggen, ved at trykke på en knap?
Avatar billede martinlind Nybegynder
04. juli 2002 - 16:31 #25
DeleteKey eller noget i den stil, du kan lige tage hjælp på TRegistry class'en

/Martin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester