Autor |
Beitrag |
X-Mailer
      
Beiträge: 20
Erhaltene Danke: 1
|
Verfasst: Mo 24.03.08 15:46
Hallo,
ich habe ein Programm geschrieben das alle Run-Einträge der Systemregistrierung auflistet
und bei aufteten von neuen Schlüsselwerten aufpopt.
Problem ist die Vista Benutzerkonstensteuerung (UAC) , die verhindert das ich z.B. den Eintrag des Vista Defender anzeigen lassen kann (HKLM\...\CurrentVersion\Run)
Noch ein Effekt der UAC:
Starte ich RegEdit "von Hand" dann sehe ich den Eintrag unter HKLM\...\CurrentVersion\Run
Starte ich Regedit von meinem Programm aus dann sehe ich den Eintrag nicht
Gibt es irgend eine Möglichkeit diese Registrierungsschlüssel NUR ZU LESEN, ich will ja nichts verändern, nur korrekt alle Run-Schlüssel anzeigen.
Mein bisheriger Code sieht so aus :
Kompletter Code : sourceforge.net/projects/regrunner
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| .. st.clear; RE.Access:=Key_READ; if RE.OpenKey(Key, false) then begin try RE.GetValueNames(st); if st.Count>0 then for ix:=0 to st.count-1 do begin Typ:=RE.GetDataType(st[ix]); if ( (Typ=rdString) or (Typ=rdExpandString)) then begin V:=RE.ReadString(st[ix]); .. |
Danke schon mal !
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Mo 24.03.08 17:27
Hallo,
um auf HKLM unter Vista zugreifen zu können brauchst du Admin-Rechte, leider auch, wenn du nur lesen möchtest.
Wenn du in deine Anwendung ein entsprechendes Vista-Manifest (siehe FoSuFu) mit integrierst, dann springt die UAC unter Vista an und der Benutzer darf mit einer Bestätigung deiner Anwendung die Admin-Rechte geben. Dann solltest du HKLM auslesen können.
Mit dem manuell gestarteten RegEdit klappt das auch nur, weil vorher die UAC hochpoppt, um dem RegEdit die Admin-Rechte zu geben.
Wenn du RegEdit aus deiner Anwendung startest, dann hat RegEdit zunächst dieselben Rechte wie deine Anwendung und kann damit HKLM nicht auslesen.
Ich hatte zu dem ganzen UAC und Vista mal einige gute Artikel und Beiträge in der DP gesehen, meine ich.
Gruß
alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
X-Mailer 
      
Beiträge: 20
Erhaltene Danke: 1
|
Verfasst: Mo 24.03.08 18:26
Danke sehr für die Ausführliche Erklärung.
Ich habe unter Vista Adminrechte aber das nützt anscheinend nichts da ich die
64BIT Version benutze und mein 32-Bit Programm anscheinend "Virtualisiert" wird
wie ich jetzt im Taskmanager gesehen habe.
Ob mein Prog unter der 32-Bit Vista Variante mit admin-Rechten alles lesen kann werde ich noch herausfinden müssen.
Derweil werde ich mir das mit dem Manifest mal ansehen, danke für den Tip !
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Mo 24.03.08 19:46
Damit wir nicht aneinander vorbeireden:
X-Mailer hat folgendes geschrieben: | Ich habe unter Vista Adminrechte |
Wenn du unter Windows Vista dir einen Benutzeraccount erstellst, der ein Administrator ist, so bedeutet das ja nicht, dass du, bei eingeschalteter UAC ohne Probleme alle Rechte hast. Die Admin-Rechte bekommt das Programm ja erst dann, wenn der Benutzer dem via UAC zugestimmt hat.
Wie sich das jetzt mit der 64-bit Version verhält, das weiß ich leider nicht, weil ich damit noch nie was gemacht habe
Gruß
alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
X-Mailer 
      
Beiträge: 20
Erhaltene Danke: 1
|
Verfasst: Mo 24.03.08 20:25
Ist schon klar...
Es ist sogar noch schlimmer :
Wenn ich mein Programm manuell bei der installation starte und ich stimme zu das es Admin-Rechte hat, dann das Programm automatisch im Autostart-Ordner verlinkt wird,
hat das Programm beim nächsten Windowsstart keine Admin-Rechte mehr.
Hasta la Vista 
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mo 24.03.08 20:30
Deshalb benötigst du auch eine Admin-Manifest
_________________ Markus Kinzler.
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Di 25.03.08 01:56
Und das macht durchaus Sinn, weil ich sonst ja als Hacker die UAC einfachst umgehen könnte. Ich müsste nur zusehen, dass ich eine Exe, die dauerhaft Admin-Rechte hat, manipulieren und dort meinen Code reinpacke. Dann wäre die UAC schlichtweg nur ein GUI-Spielzeug
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Di 25.03.08 08:21
alias5000 hat folgendes geschrieben: | Und das macht durchaus Sinn, weil ich sonst ja als Hacker die UAC einfachst umgehen könnte. Ich müsste nur zusehen, dass ich eine Exe, die dauerhaft Admin-Rechte hat, manipulieren und dort meinen Code reinpacke. Dann wäre die UAC schlichtweg nur ein GUI-Spielzeug |
Nicht ganz. Es gäbe ja sowas wie digital Signatur bzw. merken von MD5 oder ähnlichen Checksummen zur Exe. Apple macht sowas ähnliches indem es die Signatur in die Exe schreibt. War aber ein Fehler da diverse Programme nicht mehr laufen wenn Sie geändert wurden.
|
|
X-Mailer 
      
Beiträge: 20
Erhaltene Danke: 1
|
Verfasst: Di 25.03.08 18:31
Nur der Vollständigkeit halber :
Ich finde die Idee der UAC sehr gut, ich wünschte mein Programm würde igendwann einmal überflüssig 
|
|
X-Mailer 
      
Beiträge: 20
Erhaltene Danke: 1
|
Verfasst: Mi 26.03.08 18:10
Nachtrag : Unter Vista 32bit wird der Defender Eintrag in HKLM/.../run von meinem Programm gefunden.
Liegt also an der Virtualisierung unter Vista 64, wie oben schon angenommen.
|
|