Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Registry-Probleme unter Vista (https://www.delphipraxis.net/111025-registry-probleme-unter-vista.html)

Popov 28. Mär 2008 08:22


Registry-Probleme unter Vista
 
Hi,

ich hab ein Programm geschrieben welches ich selbst seit etwa einem Jahr ohne Probleme unter XP nutze. Das Programm biete ich außerdem im Internet an und ich schätze es gibt einige hundert Nutzer. Bei Vista gibt es allerdings Problem-Meldungen. Die Nutzer meinen, daß sie die Optionen nicht speichern können. Dabei ist das wichtig, da man für die Nutzung Zugangsdaten braucht und wenn die nicht gespeichert werden können, dann muß man sie bei jeden Programmstart manuelle eingeben und das ist sehr umständlich.

Wie arbeitet das Programm mit der Registry? Ich schriebe und lese die Daten in dem Pfad:

Code:
HKEY_CURRENT_USER\Software\Programm
Eigentlich sollte es bei HKEY_CURRENT_USER keine Probleme geben, denn dieser Bereich der Registry ist Kontospezifisch und unterliegt keinen Beschränkungen, da es Kontoabhängig und somit Einschränkungen wenig Sinn ergeben würden.

Nun kann ich zu dem Problem wenig sagen, da ich selbst kein Vista habe und die Nutzer mir lediglich sagen können, daß die Zugangsdaten nicht gesichert werden. Es wird nichts gespeichert. Also muß Vista das Programm daran hindern die Daten dort abzulegen.

Kennt sich hier einer aus und kann mir sagen welches Problem es sein könnte? Wie gesagt, ich selbst hab kein Vista und mehr können mir die Nutzer nicht sagen.

Das einzige was vielleicht noch interessant wäre ist, daß ich dafür die TRegIni und nicht die TRegistry nutze. Die TRegIni greift NUR auf den HKEY_CURRENT_USER\Software Pfad, ist also für Optionen besonders geeignet.

DeddyH 28. Mär 2008 08:27

Re: Registry-Probleme unter Vista
 
Vielleicht wäre es besser, wenn Dein Programm den Fehler selbst auswertet. Ich habe auch kein Vista und daher sonst nicht viel dazu sagen.

RavenIV 28. Mär 2008 08:39

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Nun kann ich zu dem Problem wenig sagen, da ich selbst kein Vista habe und die Nutzer mir lediglich sagen können, daß die Zugangsdaten nicht gesichert werden. Es wird nichts gespeichert. Also muß Vista das Programm daran hindern die Daten dort abzulegen.

Es ist immer schlecht, für eine Plattform zu entwickeln, die man selbst nicht zum Testen hat.

Nimm eine VM und installier dort Vista rein.
Dann kannst Du testen, was passiert.

Popov 28. Mär 2008 08:51

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von RavenIV
Es ist immer schlecht, für eine Plattform zu entwickeln, die man selbst nicht zum Testen hat.

Ich hab es nicht für Vista entwickelt, allerdings haben etliche Nutzer inzwischen Vista.

Zitat:

Nimm eine VM und installier dort Vista rein.
Dann kannst Du testen, was passiert.
Erstmal Vista haben ohne sie von einer DVD mit blauer Unterseite nutzen zu müssen ;)


Außerdem gehe ich davon aus, daß dieses Problem nicht unbekannt ist, da ich nichts besonderes mache. Dieses Problem müssen also schon andere gehabt haben.

RavenIV 28. Mär 2008 08:56

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Zitat:

Zitat von RavenIV
Es ist immer schlecht, für eine Plattform zu entwickeln, die man selbst nicht zum Testen hat.

Ich hab es nicht für Vista entwickelt, allerdings haben etliche Nutzer inzwischen Vista.

Also musst Du Deine Software auch mit Vista testen.

Zitat:

Zitat von Popov
Zitat:

Nimm eine VM und installier dort Vista rein.
Dann kannst Du testen, was passiert.
Erstmal Vista haben ohne sie von einer DVD mit blauer Unterseite nutzen zu müssen ;)


Außerdem gehe ich davon aus, daß dieses Problem nicht unbekannt ist, da ich nichts besonderes mache. Dieses Problem müssen also schon andere gehabt haben.

Du musst es aber trotzdem selber testen.

Stell Dir vor, eine Firma baut ein Auto.
Da die Firma nun aber keine Autobahn besitzt, testen sie das Auto nicht auf der Autobahn.
Ein Käufer ist nun aber so mutig und fährt damit auf die Autobahn und gibt so richtig Gas.
Würdest Du also den Einwand der Firma ("Wir haben aber keine Autobahn zum testen") tolerieren?

OregonGhost 28. Mär 2008 09:12

Re: Registry-Probleme unter Vista
 
Unabhängig von der Frage, ob du unter Vista testen solltest, bleibt dir eigentlich nur eine Möglichkeit: Dein Programm sollte immer und überall gucken, ob seine Aktionen Erfolg hatten, und wenn nicht, auf geeignete Weise den Fehler entweder anzeigen oder, noch besser, mitloggen. Ein Kunde, bei dem das Problem auftritt, kann dir dann seine Logdatei schicken und dann weißt du vielleicht schon, woran es liegt. Blind drauflos zu raten ist eher weniger hilfreich, außer bei bekannten Problemen. HKEY_CURRENT_USER sollte eigentlich nicht zu diesen gehören. Dieser Tipp ist allgemeingültig - wenn man ihn schon im Vorfeld bei der Entwicklung beachtet, hat man hinterher meist leichteres Spiel.

Bernhard Geyer 28. Mär 2008 09:15

Re: Registry-Probleme unter Vista
 
Leg mal unter NT/2000/XP einen User an und füge diesen nur der Gruppe "Benutzer" zu (als nicht Hauptbenutzer oder Administratorgruppe). Damit kannst du einige Rechteeinschränkungen die auch unter Vista mit aktiven UAC gelten nachstellen. Sinnvoll ist es auch ein erweitertes Manifest (zur Deaktivierung der Registry/Dateisystem-Virtualisierung) zu verwenden. Mit deaktivierter Virtualisierung hast du praktisch fast zu 100% das gleiche verhalten wie unter NT/2000/XP mit entsprechenden Benutzer der Gruppe "Benutzer"

Ansonsten: VM-Ware + Vista-Installation ist nötig um den vielen anderen Problemen auf die dein Programm stoßen kann nachstellen zu können.

Popov 28. Mär 2008 09:18

Re: Registry-Probleme unter Vista
 
Zitat:

Also musst Du Deine Software auch mit Vista testen.
Also Leute, ihr braucht mir hier keine Moralprädigten zu halten und mich vollsülzen. Ich weiß selbst, daß man Software testen soll. Und nun?

Ich lasse die Leute mit dem Vistaprobelem schon seit einige Zeit hängen, aber es melden sich immer neue Leute. Ich komme nicht drumherum es irgendwann zu lösen. Es bringt mir nicht viel hier voll gequatscht zu werden. Entweder gibt es hier Leute die das Problem kennen oder nicht. Ich werde mir garantiert kein Vista kaufen nur um eine Freeware zu testen. Wenn ich in diesem Forum keine Antwort kriege, dann frage ich in einem anderen Forum nach. So einfach ist das. Sorry für die direkten Worte, aber ich hab keine Ahnung wieso sich manchen Leute berufen fühlen Kommentare abzugeben die keinen interessieren. Wenn ich kommerzielle Software entwickle und sie für Vista anbiete, dann können wir nochmal darüber reden.

Und glaubt mir, ich bin garantiert einer der wenigen in diesem und anderen Foren die vor der Veröffentlichung eines Programms es auf Herz und Nieren testen. Alle Programme von mir im Netz sind vorher von mir über einen Zeitraum getestet. Ich werde mir also nicht blödes Zeug anhören wie man Software testet. Es gab dieses Programm noch vor Vista und ich hab es nicht für Vista geschrieben, sondern für XP. Allerdings haben inzwischen immer mehr Leute Vista.

Also, tut mir bitte einen Gefallen und haltet euch zurück, damit die, die Ahnung haben hier auch antworten.

Ich kann mir auch nicht vorstellen, daß das Problem unbekannt ist.

Popov 28. Mär 2008 09:27

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von OregonGhost
Unabhängig von der Frage, ob du unter Vista testen solltest, bleibt dir eigentlich nur eine Möglichkeit: Dein Programm sollte immer und überall gucken, ob seine Aktionen Erfolg hatten, und wenn nicht, auf geeignete Weise den Fehler entweder anzeigen oder, noch besser, mitloggen. Ein Kunde, bei dem das Problem auftritt, kann dir dann seine Logdatei schicken und dann weißt du vielleicht schon, woran es liegt. Blind drauflos zu raten ist eher weniger hilfreich, außer bei bekannten Problemen. HKEY_CURRENT_USER sollte eigentlich nicht zu diesen gehören. Dieser Tipp ist allgemeingültig - wenn man ihn schon im Vorfeld bei der Entwicklung beachtet, hat man hinterher meist leichteres Spiel.

Was soll da geloogt werden? Es werden Zugangsdaten eingegeben und es wird ein Knöpfchen gedrückt. Dann speichert eine Unit, die ich schon seit 6 Jahren ohne Problem nutze und in diesem Programm eingebaut habe, die Daten in der Registy. Das macht sie schon seit sechs Jahren. Um ehrlich zu sein haben ich an die 100 Programme inzwischen (nicht alle sind veröffentlicht worden) die diese Unit nutzen. Man kann also sagen, daß diese Unit seit 6 Jahren erfolgreich unter Windows XP und 98 eingesetzt wird. Ich garantiere dir auch, daß es in der Unit keinen Fehler gibt. Diese Unit ist 100% Error-Free. An der Unit gibt es nichts zu rütteln und loogen brauche ich auch nichts. Das Problem ist Vista. Anscheinend unterscheidet sie sich zu XP in dem Bereich. Irgendwas macht Vista jetzt anders. Die Frage ist was?

Bernhard Geyer 28. Mär 2008 09:27

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Also Leute, ihr braucht mir hier keine Moralprädigten zu halten und mich vollsülzen. Ich weiß selbst, daß man Software testen soll.

Und wieso machst du es nicht für die Zielsysteme?

Zitat:

Zitat von Popov
Es bringt mir nicht viel hier voll gequatscht zu werden. Entweder gibt es hier Leute die das Problem kennen oder nicht.

Dann kein gequatsche: HKEY_CURRENT_USER geht auch unter Vista so wie unter NT/.../2008 auch. Das Problem liegt also woanders

Zitat:

Zitat von Popov
Ich werde mir garantiert kein Vista kaufen nur um eine Freeware zu testen. Wenn ich in diesem Forum keine Antwort kriege, dann frage ich in einem anderen Forum nach. So einfach ist das.

Hält dich keiner ab. Ich denke aber nicht das es an dem Registry-Key hängt. Das ist deine Vermutung und ohne Quellcode oder Tests unter Vista müssen. Wie wäre es mit einer Testversion mit erweiterten Debug-Ausgaben die du bei einem guten User mal laufen läßt.

Zitat:

Zitat von Popov
Sorry für die direkten Worte, aber ich hab keine Ahnung wieso sich manchen Leute berufen fühlen Kommentare abzugeben die keinen interessieren.

Und wie ist es mit Leuten die zu wenig Informationen/Quellcode liefern um eine vernünftige Fehleranalyse zu ermöglichen.

Zitat:

Zitat von Popov
Ich kann mir auch nicht vorstellen, daß das Problem unbekannt ist.

Leide auch unter Vista aund schreibe auch unter HKEY_CURRENT_USER und habe keine Probleme damit. Also liegt das Problem vermutlich woanders.

DeddyH 28. Mär 2008 09:33

Re: Registry-Probleme unter Vista
 
Und wenn man Funktionen nicht auf ihren Rückgabewert prüft und Leute, die trotz der mäßigen Infos noch versuchen, sich mit dem Problem auseinanderzusetzen, in so einem Ton anfährt, darf man sich nicht wundern, wenn diese Leute irgendwann die Lust verlieren. Dieser Punkt ist bei mir nun erreicht, da das nun der 2. Thread ist, in dem sich Popov dermaßen aufführt.

defede 28. Mär 2008 09:36

Re: Registry-Probleme unter Vista
 
Hi Popov,
ich hatte das Problem mit dem User Konto bei Vista auch.
Die Lösung brachte eine mitgelieferte Manifest datei.

so in Etwa:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="NAME" type="*"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
</dependentAssembly>
</dependency>
</assembly>

OregonGhost 28. Mär 2008 09:38

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von DeddyH
Und wenn man Funktionen nicht auf ihren Rückgabewert prüft und Leute, die trotz der mäßigen Infos noch versuchen, sich mit dem Problem auseinanderzusetzen, in so einem Ton anfährt, darf man sich nicht wundern, wenn diese Leute irgendwann die Lust verlieren. Dieser Punkt ist bei mir nun erreicht, da das nun der 2. Thread ist, in dem sich Popov dermaßen aufführt.

Ich muss zustimmen. Popov, deine tolle, 6 Jahre alte Unit ist offenbar nicht in der Lage, ihre eigenen Funktionen auf Fehlerfälle zu überprüfen. Genau diese kann man dann loggen und weiß sofort, was genau schiefgelaufen ist. Wenn deine Unit so toll wäre, würde sie das auch tun (oder alternativ ihre Fehler z.B. über Exceptions melden, so dass deine Anwendung sie loggen kann). Und ehrlich gesagt - 99% alle Probleme, die unter Vista auftauchen, wären auch schon unter XP mit eingeschränktem Benutzerkonto aufgetreten, nur dass unter XP kaum jemand ein eingeschränktes Benutzerkonto verwendet. Man kann seine Sache auch 6 Jahre lang falsch machen.

Edit roter Kasten: Die Lösung ist nicht dein Ernst, oder? Einfach mal brachial Admin-Rechte anfordern, anstatt der Problemursache nachzugehen? Oo

Noch ein Edit: Weil ich gute Laune habe, noch ein Tipp trotz Popovs Aggressivität: Dein Kunde (sollte ein technisch versierter sein) könnte auch einfach mal den Process Explorer laufen lassen und damit dein Programm überwachen. Auf diese Weise kann man auch herausfinden, wo ein Aufruf gegebenenfalls scheitert und eventuell sogar warum.

Popov 28. Mär 2008 10:03

Re: Registry-Probleme unter Vista
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ok, da ich mir kein Vista kaufen will, hab ich ein Beispiel erstellt. Was den betreffenden Punkt angeht, so stimmen beide Programme überein, d.h. diese Beispielprogramm tut die Informationen auf die gleiche Weise speichern wie auch das andere Programm. In diesem Programm hab ich lediglich noch die Abfrage dazu geschrieben, die die Speicherung prüft. Ihr könnt es testen, der Quellcode ist dabei.

Popov 28. Mär 2008 10:17

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von DeddyH
Und wenn man Funktionen nicht auf ihren Rückgabewert prüft

Also ich verstehe immer noch nicht das Problem. Hast du vorher überhaupt überlegt was du antwortest und ob es einen Sinn ergibt? Anscheinend nicht. Was habe ich gesagt? Ich hab gesagt, daß etwas nicht gespeichert wird. Du wirfst mir vor, daß ich nicht prüfe ob es gespeichert wird. Wo ist da die Logik? Ich weiß, daß es nicht gespeichert wird. Was soll ich auf Rückgabewert prüfen? Dieser Satz von dir hätte nur dann einen Sinn wenn ich mich beschweren würde, daß mein Programm nicht funktioniert und wir festgestellt hätten, daß ein Wert aus der Registry nicht vorhanden ist. Dann könnte man darüber diskutieren ob man die Speicherung prüfen muß. Aber hier weiß ich, daß es nicht gespeichert ist und frage deshalb warum?

Wie du siehst ergibt das was du schreibst keinen Sinn.

Etwas OffTopic:

Zitat:

Dieser Punkt ist bei mir nun erreicht, da das nun der 2. Thread ist, in dem sich Popov dermaßen aufführt.
Du bist ein sehr bedauernswerter Mensch. Ich bin hier so selten und das letzte Mal ist schon so lange her, daß ich mir keinen Namen hier im Forum gemerkt habe. Du aber merkst dir doch tatsächlich alle Leute die vor Monaten nicht nett zu dir waren. Hast du nichts besseres zu tun? Wenn ich mich mit einem in einem Forum anlege, dann habe ich nach eine Woche jeden Streit vergessen. Du aber merkst dir doch tatsächlich Leute. Finde ich furchbar.

TurboMartin 28. Mär 2008 10:25

Re: Registry-Probleme unter Vista
 
Also bei mir funktioniert das einwandfrei. Welches Programm ist das denn, das nicht funktioniert?

Popov 28. Mär 2008 10:27

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von OregonGhost
Ich muss zustimmen. Popov, deine tolle, 6 Jahre alte Unit ist offenbar nicht in der Lage, ihre eigenen Funktionen auf Fehlerfälle zu überprüfen.

Ich merke, daß Antworten zu 99% aus unsinnigen und unnötigen Zeugs bestehen. Also, Eintrag soll in Registry gespeichert werden, tut es unter Vista nicht, was daran willst du loggen? Dein Einwand ergibt keinen Sinn.

Zitat:

Und ehrlich gesagt - 99% alle Probleme, die unter Vista auftauchen, wären auch schon unter XP mit eingeschränktem Benutzerkonto aufgetreten, nur dass unter XP kaum jemand ein eingeschränktes Benutzerkonto verwendet. Man kann seine Sache auch 6 Jahre lang falsch machen.
Ob du es glaubst oder nicht, ich arbeite seit 6 Jahren mit XP und hab bisher noch keinen einzigen Tag mit einem Adminkonto (bis auf Installation und Konfiguration) gearbeitet. Ich bin iner der ersten und wenigen die von Anfang an in Foren für eingeschränkte Benutzerrechte geworben haben mit der Bitte, daß die Programmierer sich dran halten. Also was erzählst du da für ein Schrott.

Außerdem hat TRegIni keinerlei Probleme mit eingeschränkten oder admin Rechten.

Also, mag sein, daß ich hier und da gelegentlich unhöflich bin, aber das nur weil ich von Leuten mit über 1000 Beiträgen immer so unqualifizierte und unsinnige Antworten bekomme.

Popov 28. Mär 2008 10:45

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von TurboMartin
Also bei mir funktioniert das einwandfrei. Welches Programm ist das denn, das nicht funktioniert?

Also ich hab von einigen Vista Nutzern die Meldung, daß ihre Daten nicht gespeichert werden. Hier paar Zitate:

Zitat:

Ich benutze auch Vista Ultimate und hab auch das gemeldete Problem.

Wahrscheinlich liegt es an der Registry-Verschlüsselung, obwhol ich UAC deaktiviert habe.
Man könnte doch eine Vista-Version anbieten, wo die Login_daten in einer Ini gespeichert werden.

Sonst sieht das Programm ganz gut aus:T
Zitat:

Das interessiert mich auch!

Habe das gleiche Problem mit Vista Ultimate.

THX
Die Infos sind spärlich. Ich weiß nur, daß einige Leute (alles Vista Nutzer) ihre Zugangsdaten nicht sichern können. Nur zwischen der Registry und dem Editfeld ist da nicht viel was falsch sein könnte. Es muß also die Registry sein.

Ich kenne ein ähnliches Problem, allerdings ging es da um die TRegistry und nicht TRegIni. So funktionierte damals mein mit Delphi 3 erstelltes Programm plötzlich nicht wenn ich es mit Delphi 6 kompiliert habe. Nach eine Suche hab ich festgestellt, daß Delphi 6 bei Registry noch zusätzlich die TRegistry-Eigenschaft Access hatte. Das brauchte man bei Delphi 3 nicht und es funktioniert trotzdem. Bei Delphi 6 mußte ich dann noch ein Access hinzufügen, obwohl das Delphi 3 Programm vorher 2 Jahre ohne Probleme lief.

Es sind die Kleinigkeiten auf die ich hinaus will. Stattdessen diskutiert man hier die Frage ob man Fehler loggen soll.

Luckie 28. Mär 2008 10:48

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Also ich verstehe immer noch nicht das Problem. Hast du vorher überhaupt überlegt was du antwortest und ob es einen Sinn ergibt? Anscheinend nicht. Was habe ich gesagt? Ich hab gesagt, daß etwas nicht gespeichert wird. Du wirfst mir vor, daß ich nicht prüfe ob es gespeichert wird. Wo ist da die Logik?

Er wirft dir gar nichts vor. Du verstehst nur nicht, was wir alle die ganze Zeit meinen.
Beispiel:
Delphi-Quellcode:
if Registry.OpenKey(...) then
begin
  ...;
  ...;
end;
Damit überprüfst du zwar ob die Funktion fehlgeschlagen ist oder nicht, hift dir aber bei der fehlersuche nicht weiter. Du sollste es so machen:
Delphi-Quellcode:
if Registry.OpenKey(...) then
begin
  ...;
  ...;
end
else
begin
  ShowMessage(SysErrorMessage(getLastError)); // oder entsprechend eine Exception werfen.
end;
Zitat:

Wie du siehst ergibt das was du schreibst keinen Sinn.
Wie du siehst ergibt das, was er schreibt sehr wohl Sinn.

Genau genommen müsste man es sogar so machen, um alles abzufangen:
Delphi-Quellcode:
procedure WriteToRegistry;
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    try
      reg.Root := ...;
      if reg.OpenKey(...) then
      begin
        ...;
        ...;
      end
      else
        raise Exception:Create(SysErrorMessage(GetLastError));
    except
      raise Exception:Create(SysErrorMessage(GetLastError));
    end;
  finally
    reg.Free;
  end;
end;

...;
try
  WriteToRegistry
except
  on E: Exception do
    ShowMessage(E.Message);
end;
...;

Zitat:

Du bist ein sehr bedauernswerter Mensch. ...
Bitte klärt eure persönlichen Differenzen per E-Mail oder PN.

DeddyH 28. Mär 2008 10:53

Re: Registry-Probleme unter Vista
 
[OT]
Zitat:

Zitat von Luckie
Bitte klärt eure persönlichen Differenzen per E-Mail oder PN.

Ich habe nichts zu klären. Ich habe meine Meinung kundgetan und damit muss Popov nun leben oder es meinetwegen auch sein lassen. In meinen Augen ist die Sache erledigt. [/OT]

OregonGhost 28. Mär 2008 10:57

Re: Registry-Probleme unter Vista
 
Als Ergänzung zu Luckies Beitrag:
Zitat:

Zitat von Popov
Also, Eintrag soll in Registry gespeichert werden, tut es unter Vista nicht, was daran willst du loggen? Dein Einwand ergibt keinen Sinn.

Jeder einzelne Funktionsaufruf unter Windows gibt einen Fehlercode zurück und dieser Fehlercode ist, im Zweifel zusammen mit GetLastError, eine präzise Beschreibung dessen, was genau schiefgelaufen ist. "Er wird nicht geschrieben" ist keine solche Beschreibung. "Er wird nicht geschrieben, weil die erforderlichen Rechte fehlen" wäre eine exakte Beschreibung und übrigens auch ein erstklassiger Suchbegriff. Du spekulierst einfach so vor dich hin, warum es nicht funktioniert und hoffst, dass irgendjemand dir einen Tipp gibt. Und beschimpfst bei der Gelegenheit alle Leute, die dir tatsächlich Tipps geben, wie du dem Fehler auf die Spur kommen könntest. Wenn dir ein Tipp nicht gefällt, ignoriere ihn.

Und noch eine Ergänzung: Ich speichere meine Daten seit Ewigkeiten ohne Probleme in die Registry, wenn nötig (im .NET-Bereich landen die Dinge natürlich eher in einer appconfig und im Linuxbereich ist nix mit Registry). Auch unter Vista. Und wenn es fehlschlägt, weiß ich aufgrund der Fehlerbeschreibung auch schon, warum - oder das Programm trifft schon selbst entsprechende Maßnahmen. Der Fehler liegt also nicht bei Vista.

wido 28. Mär 2008 10:57

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Ich merke, daß Antworten zu 99% aus unsinnigen und unnötigen Zeugs bestehen. Also, Eintrag soll in Registry gespeichert werden, tut es unter Vista nicht, was daran willst du loggen? Dein Einwand ergibt keinen Sinn.

Besonders hübsch wie Du alles in try Blöcke einschließt in deiner Unit, damit auch ja niemals eine Fehlermeldung, die sinnvolle Hinweise geben könnte, angezeigt wird.

Ansonsten hat Luckie bereits das gepostet, was ich schreiben wollte. Ich hab mich nur vorher mit deiner Unit aufgehalten ;).

OregonGhost 28. Mär 2008 11:02

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von wido
Zitat:

Zitat von Popov
Ich merke, daß Antworten zu 99% aus unsinnigen und unnötigen Zeugs bestehen. Also, Eintrag soll in Registry gespeichert werden, tut es unter Vista nicht, was daran willst du loggen? Dein Einwand ergibt keinen Sinn.

Besonders hübsch wie Du alles in try Blöcke einschließt in deiner Unit, damit auch ja niemals eine Fehlermeldung, die sinnvolle Hinweise geben könnte, angezeigt wird.

Ich hatte vorhin gar nicht gesehen, dass der Quellcode angehängt war. In meinem Team hätte man für so einen Code eine stundenlange Standpauke bekommen. Exception Swallowing in Reinkultur und nichtmal Rückgabewerte, die auf einen Fehlerfall schließen lassen. Und dann wunderst du, Popov, dich wirklich darüber, was man loggen könnte und warum du nicht auf den Fehler kommst?

user0815 28. Mär 2008 11:09

Re: Registry-Probleme unter Vista
 
Hi Popov,

ich habe das Programm eben unter Vista Ultimate einmal getestet.
Es gab keine Probleme.

Ich kann mir vorstellen das andere User evtl. nicht alle Vista Updates installiert haben, wäre zumindest ne Möglichkeit.

Rapidshare Screenshot

Popov 28. Mär 2008 11:15

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Luckie
Damit überprüfst du zwar ob die Funktion fehlgeschlagen ist oder nicht, hift dir aber bei der fehlersuche nicht weiter. Du sollste es so machen:
Delphi-Quellcode:
if Registry.OpenKey(...) then
begin
  ...;
  ...;
end
else
begin
  ShowMessage(SysErrorMessage(getLastError)); // oder entsprechend eine Exception werfen.
end;

Jetzt nicht falsch verstehen, aber das ist es was ich meine. Ich bin wirklich einer, der sehr wenig fragt. In der Regel antworte ich. Wenn ich aber frage, dann schreibe ich eigentlich alle nötigen Informationen, damit keine Rückfragen nötig sind. Das Problem ist, daß sie eigentlich nie gelesen werden, und das ärgert mich dann.

Wie ich bereits geschrieben habe benutze ich TRegIni. Immer wenn ich nur die Optionen speichern will, benutze ich die TRegIni, da sie sehr einfach ist und ich mir jede menge Zeilen sparen kann. Die TRegIni greift immer nur auf einen Pfad der Registry, also ist der Code immer kurz. Das mit if Registry.OpenKey(...) then kann ich mir sparen, denn TRegIni hat sowas nicht, bzw. macht es intern. Deshalb können da auch keine Fehler vorkommen. Wie ich schon gesagt habe, der entsprechende Code ist 100% Error free. Auch eine Error-Routine ist nicht nötig. All das brauche ich nicht, denn es gibt keine Fehlermeldungen die ich abfangen könnte. Ein typischer Code siehst so aus:

Delphi-Quellcode:
  with TRegIniFile.Create('Programmname') do
  try
    S := ReadString(Section, Ident, Default)
  finally
    Free
  end;
Da gibt es nichts um es falsch zu machen. Und der try finally ist nur aus Höflichkeit da.

Wie du siehst geht es hier nicht um Fehler. Du kannst dir den Quellcode angucken und mir die Fehler zeigen.

Zitat:

Zitat:

Du bist ein sehr bedauernswerter Mensch. ...
Bitte klärt eure persönlichen Differenzen per E-Mail oder PN.
Um ehrlich zu sein habe ich keine Ahnung was der Typ von mir will. Ich kann mich nicht erinnern je mit ihm im Leben zu tun gehabt zu haben. Wenn, dann habe ich den schon längst vergessen. Wenn er nichts besseres zu tun hat als sich nach einem Jahr an EINE unfreundliche Antwort zu errinnen, als ultra extrem nachtragend zu sein, vielleicht sollte er dann sich professionelle Hilfe besorgen.

Luckie 28. Mär 2008 11:25

Re: Registry-Probleme unter Vista
 
Ach und was passiert, wenn das
Delphi-Quellcode:
procedure WriteIniString(Section, Ident, Value: String);
begin
  with TRegIniFile.Create(RegFile) do try
    WriteString(Section, Ident, Value)
  finally Free end;
end;
zum Beispiel fehlschlägt? Und jetzt sag mir nicht, das kann nicht fehlschlagen, denn das tut es ja offenbar.

Desweiteren:
Zitat:

TRegIniFile enables handling the Windows 95/NT system registry as if it were a Windows 3.x INI file.
Ich glaube, du solltest doch mal auf TRegistry zurückgreifen und wenn es nur zum Testen ist, denn TRegIniFile scheint für mich schon mehr als veraltet zu sein.

wido 28. Mär 2008 11:27

Re: Registry-Probleme unter Vista
 
Achso, noch als kleiner Hinweis von wegen: "Ich will nicht testen, geb kein Geld aus blubb..."

Es gibt auch von Vista 180 Tage Trial Versionen und Virtual PC 2007 ist soweit ich mich erinnere kostenlos erhältlich. Ich weiß nicht ob es lizenzrechtlich einwandfrei wäre die Trial Version für Softwaretesting zu verwenden, aber denke mal es wäre zumindest mal eine Lektüre der EULA wert. Dafür benötigst Du nur eine Vista Installations DVD.

Wenn Du keine DVD hast, gibts bei MS auch fertige Virtual PC Images zum Download. Die laufen allerdings nur 30 Tage:
http://www.microsoft.com/downloads/d...DisplayLang=en

Popov 28. Mär 2008 11:50

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Luckie
Ach und was passiert, wenn das
...
zum Beispiel fehlschlägt?

Nichts. Es gibt keine Fehlermeldung, es wird nur nichts gespeichert. Es steht dir frei nach dem Speichern zu überprüfen ob der Wert gespeichert wurde, aber sonst gibt es keine Fehlermeldung. Um ganz ehrlich zu sein weiß ich auch nicht was da schiefgehen könnte, bis auf, daß die Festplatte voll ist. Aber auch dann gibt es keine Meldung von der der Routine. Noch nie erlebt.

Zitat:

Und jetzt sag mir nicht, das kann nicht fehlschlagen, denn das tut es ja offenbar.
Wie ich schon gesagt habe nutze ich den Code seit 6 Jahren ohne je nur eine einziege Fehlermeldung gehabt zu haben oder, daß der Code nicht funktioniert hat. Allerdings kann ich das nur für XP sagen. Auch haben nicht alle Visa Nutzer Probleme, nur einige.

Es geht hier also weniger drum ob mein Code einen Fehler hat als der Frage ob Windows unter bestimmten Umständen das Speichern verweigert. Ich weiß, daß Windows Vista ja diesen Pseudoadmin nutz mit dem man auch als Admin sicher arbeiten kann. Meine Frage zielte also eher drauf aus ob Vista hier versucht die Registry zu schützen.

Zitat:

Desweiteren:
Zitat:

TRegIniFile enables handling the Windows 95/NT system registry as if it were a Windows 3.x INI file.
Ich glaube, du solltest doch mal auf TRegistry zurückgreifen und wenn es nur zum Testen ist, denn TRegIniFile scheint für mich schon mehr als veraltet zu sein.
Ich merke, daß du dich mit TRegIni nicht auskennst. Das Zitat von dir sagt nichts anderes, als daß TRegIni so einfach funktioniert wie früher die Ini unter Windows 3.x. Das bezieht sich lediglich auf die Arbeitsweise. Die TRegIni greift selbst auf die TRegistry:

Delphi-Quellcode:
  TRegIniFile = class(TRegistry)
Es ist nur eine abgeleitete Klasse die erlaubt genauso einfach mit der Registry wie mit der Ini zu arbeiten. Wenn man auf die ganze Registry zugreifen will, dann kommt man nicht um die TRegistry und OpenKey usw. herum. Wenn man nur Einstellungen speichern will, dann reicht TRegIniFile.

Um ehrlich zu sein müßtest du ein großer Fan der Klasse sein, da ich mich erinnern kann wie sehr dir missfällt wenn ein Programm in der Registry speichert. TRegIniFile speichert nur in einem einzigen Pfad. Das Reinigen der Registry ist also ganz leicht ;)

Dezipaitor 28. Mär 2008 12:42

Re: Registry-Probleme unter Vista
 
Und derjenige, der noch nie selbst Fehlerpfade ignoriert hat, der werfe den ersten Stein.
Ich erwarte heute keine Tiefflieger!

Also hier mein Senf:

1. @Popov. Dein Programm funktioniert bei mir! Es muss also woanders happern.
Wenn dein Programm Freeware ist, dann solltest du uns zumindest den Programm/Source-Link geben. Der eine oder
andere wird es sicher unter Vista testen. Ein Text "geht nicht unter Vista" genügt leider nicht.
Wenn du es alleine schaffen willst, dann ist Logging in eine Datei eine sehr gute Alternative.
Du könntest z.B. für die harten Fälle Eurekalog kaufen. Das kostet nicht die Welt (wie manch andere
hochgelobte Software hier) und kann dir sogar ne Email schicken, wenn bei jemandem etwas schiefgegangen ist
(wenn derjenige es will). Für einfaches Logging kannst du aber auch entweder etwas selbst machen,
oder du verwendest z.B. JwsclLogging.pas von http://blog.delphi-jedi.net/security-library


2. @all: Wenn Popop sich kein Vista kaufen will, dann muss das doch als Antwort genügen. Aber
einfach festzulegen, dass man es haben MUSS, wenn man ein Programm nur leicht dafür anpassen will,
ist für mich unverständlich. Unverständlich daher, weil es bereits viele solcher Fragen hier gab und keiner sich darüber aufgeregt hat.
Das was man ihm vorwerfen kann ist schon in Punkt 1 abgehakt.

3. Ich erwarte keine steinige Luft. Rückggabewerte werden eben gerne ignoriert und Eingabewerte
werden überhaupt nicht oder nicht vollständig überprüft.
Wäre das nicht so, könnte man heute nicht mehr in Softwaresysteme einbrechen (Buffer overflow).

4.
Zitat:

Ich muss zustimmen. Popov, deine tolle, 6 Jahre alte Unit ist offenbar nicht in der Lage, ihre eigenen Funktionen auf Fehlerfälle zu überprüfen.
Meinst du die EasyRegAppexe.pas ?
Normal ist es doch andersherum, oder? Der Benutzer einer Unit/Bibliothek muss die Fehlerfälle überprüfen, die in einer Lib-Funktion auftreten.
Es gibt nur selten Fehler, die abgefangen werden können und damit es erlauben, die Funktion fortsetzen zu lassen. Eine Lib-Funktion kann nicht für
meine Idee (was ich damit vorhabe) die Fehler abfangen. Exceptions sind extra so entworfen worden, damit sie an den nächsten Aufrufer zurückgegeben werden
können. Meine ganze Bibliothek JWSCL steht (und fällt) mit diesem Prinzip. Nur die allerwenigsten Funktionen haben wirklich einen Rückggabewert.
Ich gehe sogar noch weiter und werfe eine bestimmte Exception immer dann, wenn eine Windows Funktion fehlschlägt. Da ich nicht für alle GetLastError Meldungen
eine Exception designen kann, gebe ich eben noch die Fehlernummer an. Borland/CG macht es mit EOleSysError genauso (wobei ich das misslungen finde,
da ich keine positiven Werte abfangen kann: S_FALSE *argh*).

5.Stichwort: Fehlerbehandlung und beschreibung. Ich kenne keine Anwendung, die das vollständig durchzieht. Würde man das machen, und es trete
ein Fehler auf, dann müsste man nicht nur in verständlichen Worten den Fehler beschreiben, sondern auch noch eine Lösung dem Benutzer präsentieren.
Schaut euch mal die unter Windows möglichen Fehlercodes an. Ich habe sie hier alle aufgelistet: http://blog.delphi-jedi.net/2008/03/...ut-no-warranty
Ich bezweifle schon, dass man ansatzweise dieses Problem lösen könnte.
Man sollte nur die bekannten Exceptions/Fehler abfangen und behandeln. Den Rest kann man abfließen und damit das Programm abstürzen lassen. Hu? Absturz?
Schlimme Sache!? Schlimmer wäre es, wenn das Programm nach einem abgefangenen aber unbekannten Fehler einfach weiterläuft und mir meine Daten durcheinander bringt.
Da ich alle paar Minuten speichere, ist das Ungespeicherte verschmerzbar. BlueScreens unter Windows funktionieren nach diesem Prinzip. Würde
ein Amok-Treiber weiterlaufen könnte das höchstwahrscheinlich mehr Schaden anrichten als ein paar verlorene Daten. Es gibt natürlich die rühmliche Ausnahme,
wo Menschenleben auf dem Spiel steht (Raumschiff, Lebenserhaltung, ...). Aber die wird nicht mit Delphi programmiert (Stichwort: ADA)

6. "Exception swallowing". Ich muss zugeben, dass hab ich bis jetzt noch nie gehört. Aber schon der Laut hört sich nicht gut an :D
Wäre google das Internet, dann müsste ich nun sagen, dass die Wortkombination nicht sehr bekannt ist. Trotzdem habe ich eine nette Abhandlung des Themas gefunden.
http://pragmati.st/2006/11/22/how-to-abuse-exceptions
Leider ist es nicht Delphi (mir egal), aber man kann trotzdem etwas lernen. Wer seine englisch Kenntnisse noch ausweiten möchte, der sollte dann das
im Blog anfangs erwähnte PDF lesen.

7.
Code:
if Registry.OpenKey(...) then
begin
  ...;
  ...;
end
else
  ...
Ich mag persönlich solchen Code überhaupt nicht. Man muss schon sehr schreibwütig sein, um soetwas auszuschreiben. Und wenn dann noch
der eXtended Syntax $X aktiv ist, dann meckert nichtmal der Compiler über ignorierte Rückgabewerte. Deshalb nehme ich gerne Exceptions,
da hier im Fehlerfall der Programmcode mir auf den Zehen landet.

Es gibt einen ähnlichen Fall in TRegistry, der mich sehr verwundert hat, als ich mir den TRegistry Code angeschaut habe:
Code:
if Registry.CreateKey(...) then
begin
  ...;
  ...;
end
else
  ...
Der Code ist nach dem CreateKey-Design einfach falsch. Die Delphi-Hilfe sagt dazu folgendes:

CreateKey gibt true zurück, wenn die Erzeugung erfolgreich ist. Im Fehlerfall wird eine Exception ausgelöst. Der Versuch, einen bereits vorhandenen Schlüssel erneut zu erzeugen, hat keine Auswirkung.

D.h. wenn ein Fehler auftaucht, dann ist der Rückgabewert zwar FALSE, jedoch wird der Else-Zweig garnicht erreicht, da schon eine Exception erzeugt wird.
Ich frage mich wirklich, wer auf diese Schnapssidee gekommen ist, eine Funktion den Fehlerwert per Rückgabewert UND Exception zu übermitteln.
Da denkt man einmal an alles, nur nicht die Hilfe zu lesen.

Code:
try
  Registry.CreateKey(...)
except
  on E : ERegistryException do
    ....
end;
Im Gegensatz dazu wirft TRegistry.OpenKey keine Exception.


8. Ich hatte mal eine Frage in einer Newsgroup von einem großen Konzern gestellt. Diese Frage war jedoch bereits auf ähnliche Art und Weise
in einer anderen Newsgroup derselben Firma gestellt worden. Ich wurde freundlich darauf hingewiesen. Jemand hatte diese Frage bereits gestellt,
und genau dieser Jemand hatte mir auch geantwortet. Die Antwort bestand aus drei Worten (übersetzt): "merkwürdige Frage! Nein?"
Meine Antwort darauf, dass er doch dieselbe Frage, aber woanders gestellt hätte und was denn daran so merkwürdig wäre, hat er dann so quittiert :
"Das ist keine gewöhnliche Frage...". Verstanden? Nein? Ich auch nicht.
Was ich damit meine ist, dass man sich im Internet nichts zu Herzen gehen lassen sollte. Nicht aufregen, und die Zeit stattdessen für bessere Dinge verwenden.
(Z.b. Software verbessern oder http://blog.delphi-jedi.net besuchen)

Bernhard Geyer 28. Mär 2008 13:54

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Wie ich schon gesagt habe nutze ich den Code seit 6 Jahren ohne je nur eine einziege Fehlermeldung gehabt zu haben oder, daß der Code nicht funktioniert hat. Allerdings kann ich das nur für XP sagen. Auch haben nicht alle Visa Nutzer Probleme, nur einige.

Dann frag doch nach ob sie UAC aktiv haben oder nicht.

Zitat:

Zitat von Popov
Es geht hier also weniger drum ob mein Code einen Fehler hat als der Frage ob Windows unter bestimmten Umständen das Speichern verweigert.

Ja. Genau wie es schon seit Windows NT der Fall ist wenn der Admin u.U. auch hier entsprechende Rechte setzt. Dürfte aber sehr sehr selten sein.

Zitat:

Zitat von Popov
Ich weiß, daß Windows Vista ja diesen Pseudoadmin nutz mit dem man auch als Admin sicher arbeiten kann. Meine Frage zielte also eher drauf aus ob Vista hier versucht die Registry zu schützen.

Vista entzieht "nur" einem gestarteten Prozess alle Admin-Rechte wenn UAC aktiv ist. Wenn das Programm kein erweitertes Manifest hat so wird auch entsprechend Dateisystem und Registry virtualisiert.
Schreibst du u.U. mit einem Prozess in die Registry und ein anderes liest es aus?

Popov 28. Mär 2008 14:07

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Dezipaitor
Und derjenige, der noch nie selbst Fehlerpfade ignoriert hat, der werfe den ersten Stein.

Weißt du wieso ich so zerknirscht reagiert habe? Also eigentlich bin ich ein Absicherungsfanatiker. Damit meine ich, daß ich meine Programme übertrieben absichere. Wenn ich in meinem Programm z. B. eine Textdatei in ein Memofeld laden will, dann wird zuerst überprüft ob die Datei existiert. Bevor überhaupt geladen wird, prüfe ich ob dei Date existiert. Das mache ich auch dann wenn ich den Text über Datei-Öffnen-Dialogfenster wähle. Nicht selten prüfe ich vorher die Dateigröße, da ich keine bösen Überraschungen mag. Je nachdem, vor allem dann wenn ich nicht Datei-Öffnen-Dialogfenster nutze, wird der Dateiname auf ungültige Zeichen geprüft. Zuletzt packe ich alles noch in ein try except. Und das alles nur bei eine Textdatei die ich in ein Memo laden will. Etwa 1/4 von dem Code meiner Programme besteht auch Abfragen. Ich hab noch nie ein Programm veröffentliche, daß ich nicht mindestens eine Woche selbst getestet habe. Momentan habe ich ein Programm das ich bereits seit 3 Jahren teste. Zugegeben, ein wenig lang, aber das ergab sich so. Ich hab mal ein Programm so lange auf Fehler getestet, daß sich das Problem für das das Programm geschrieben war irgendwann mit den Jahren selbst erledigt hat. Das war mein 0190 Dialer Killer. Irgendwann hatten alle DSL und das Programm hat meinen Computer nie verlassen. Auch wenn es fantastisch funktioniert hat und ich in den zwei Jahren keinen Dialer abbekommen habe, dank des Programms. Was ich sagen will ist, daß nur ein Bescheuerter so viel ansichert und Programme im Freewarebereich testet wie ich. Und dann meinen einige kommen zu können und wollen mich belehren wie man Code absichert. Ich hab noch nie als Admin mit dem Computer gearbeitet, reiß mir den Arsch auf und mache in Programmier- und Security-Foren Aufklärungsarbeit bezüglich Eingeschränkter Benutzerkonten und dann kommt ein Heini und meint mir vorwerfen zu können, daß ich Müll programmiere, weil ich wahrscheinlich keine Ahnung habe was Eingeschränkte Benutzerrechte sind. Ich bin unhöflich? Was sich einige an Frechheiten erlauben, darüber brauchen wir nicht diskutieren. Bevor ich einem etwas vorwerfe, erwate ich eine höfliche Nachfrage. Erst dann kann man mich kritisieren.

Popov 28. Mär 2008 14:19

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Bernhard Geyer
Dann frag doch nach ob sie UAC aktiv haben oder nicht.

Acha, so nennt man das. Werde ich machen.

Zitat:

Ja. Genau wie es schon seit Windows NT der Fall ist wenn der Admin u.U. auch hier entsprechende Rechte setzt. Dürfte aber sehr sehr selten sein.
Ja, kenne ich. Allerdings gehe ich davon aus, daß keine in dem Bereich die rechte reduziert hat, denn vor allem dieser Zweig wir stark genutzt. Wenn also einer hier Rechte reduziert hat, dann wüßte er es entweder oder auch andere Programme hätten Probleme.

Zitat:

Vista entzieht "nur" einem gestarteten Prozess alle Admin-Rechte wenn UAC aktiv ist. Wenn das Programm kein erweitertes Manifest hat so wird auch entsprechend Dateisystem und Registry virtualisiert.
Zitat:

Schreibst du u.U. mit einem Prozess in die Registry und ein anderes liest es aus?
Nein, es wird alles mit einem Prozess geregelt. Außerdem wird dazwischen alles korrekt geschlossen. Das Programm was ich gepostet habe hat ist bezüglich Speicherung der Daten sehr ähnlich. Zwar in eingen Bereiche gekürzt, aber nicht was Zugriff auf die Registry angeht.

Wie ich bereits gemerkt habe taucht das Problem anscheinend nicht überall auf. ICh werde die Leute mit dem Problem nochmal anschreiben. Mal sehen ob sie mir mehr sagen können.

Bernhard Geyer 28. Mär 2008 14:35

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Wie ich bereits gemerkt habe taucht das Problem anscheinend nicht überall auf. ICh werde die Leute mit dem Problem nochmal anschreiben. Mal sehen ob sie mir mehr sagen können.

Mehr Informationen sind zwingend notwendig um dieses Problem lösen zu können.

Popov 28. Mär 2008 14:53

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Dezipaitor
1. @Popov. ...
Wenn dein Programm Freeware ist, dann solltest du uns zumindest den Programm/Source-Link geben.

Werde ich noch. Eigentlich ist das Programm in anderen Foren bereits seit paar Monaten veröffentlicht, aber momentan arbeite ich an einer neuen Version. Deshalb will ich die alte Version in neuen Foren nicht mehr verteilen. Die neue Version werde ich aber auf jeden Fall hier posten.

Allerdings kannst du per PN den Link zu den alten kriegen.

Dezipaitor 28. Mär 2008 14:56

Re: Registry-Probleme unter Vista
 
@Popov:

Also das schlechteste an deiner Unit ist, dass du TRegIniFile verwendest. Diese Klasse ignoriert Fehler schlichtweg.

Delphi-Quellcode:
  Key := CreateKey(...);
  if Key <> 0 then
  begin
    ...
  end;
Das steht in vielen Fällen im Code von TRegIniFile. Ich würde dir empfehlen, deine Unit umzuschreiben, damit sie TRegistry verwendet. Dann tobe dich noch mit den Fehlerfällen aus (Exceptions) und es sollte funktionieren.
Bis dahin kannst du die Vistaleute ausprobieren lassen, den Kompatibilitätsmodus einzuschalten.

Und wenn du dann dich immernoch ausgetobt hast, dann kannst du ja mal die JWSCL (http://blog.delphi-jedi.net) anschauen. Da drin sind vermutlich auch noch einige Schnitzer (entstanden in der Zeit zwischen 1 und 5 Uhr morgens).

wido 28. Mär 2008 14:58

Re: Registry-Probleme unter Vista
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hm ... der Anhang ist recht hübsch. TRegIniFile scheint sich auch ganz gerne Mal eigenmächtig andere Keys herzunehmen zum Schreiben, wenn es meint es besser zu wissen als Du. Evtl. werden die Daten also gesichert, aber nicht in einem Key in dem Du es erwartest. Lass deinen speziellen User der das Problem auch mal ein Registry Trace anfertigen mit Process Monitor.

Luckie 28. Mär 2008 15:40

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Popov
Zitat:

Zitat von Luckie
Ach und was passiert, wenn das
...
zum Beispiel fehlschlägt?

Nichts. Es gibt keine Fehlermeldung, es wird nur nichts gespeichert.

Genau das ist doch das Problem. Benutze TRegistry damit du endlich mal einen Fehler ls Feedback bekommst.

Zitat:

Zitat:

Und jetzt sag mir nicht, das kann nicht fehlschlagen, denn das tut es ja offenbar.
Wie ich schon gesagt habe nutze ich den Code seit 6 Jahren ohne je nur eine einziege Fehlermeldung gehabt zu haben oder, daß der Code nicht funktioniert hat. Allerdings kann ich das nur für XP sagen. Auch haben nicht alle Visa Nutzer Probleme, nur einige.
Wird also mal zeit endlich die Unit mal zu überarbeiten.

Zitat:

Es geht hier also weniger drum ob mein Code einen Fehler hat als der Frage ob Windows unter bestimmten Umständen das Speichern verweigert.
Ich dene schon, dass es um deinen Code geht.

Zitat:

Ich merke, daß du dich mit TRegIni nicht auskennst. Das Zitat von dir sagt nichts anderes, als daß TRegIni so einfach funktioniert wie früher die Ini unter Windows 3.x. Das bezieht sich lediglich auf die Arbeitsweise. Die TRegIni greift selbst auf die TRegistry:
Doch das besagt, dass TRegIni versucht so zu arbeiten wie unter 16-Bit Windows 3.1x. Und das ist schon mehr als veraltet. Vista unterstützt keine 16-Bit Programme mehr (in wiefern das hier eine Rolle spielt, weiß ich nicht).


Allerdings, wenn ich mir so den Rest deiner Beiträge in diesem Thread angucke...Ich glaube, ich steige aus, du willst einfach keine Vorschläge von uns annehmen. Viel Glück noch bei der Fehlersuche.

Dezipaitor 28. Mär 2008 16:19

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Luckie
Allerdings, wenn ich mir so den Rest deiner Beiträge in diesem Thread angucke...Ich glaube, ich steige aus, du willst einfach keine Vorschläge von uns annehmen.

Ich wäre glücklich, wenn das mal jemand für die JWSCL machen würde. Die einzigen Kommentare, die ich von außen erhalten habe waren

Popov 28. Mär 2008 17:17

Re: Registry-Probleme unter Vista
 
Zitat:

Zitat von Luckie
Genau das ist doch das Problem. Benutze TRegistry damit du endlich mal einen Fehler ls Feedback bekommst.

Luckie, das nötige Feedback habe ich schon. Ich wollte wissen ob es möglich ist, daß Vista hier Probleme macht. Bernhard Geyer hat mir zum Teil die Frage beantwortet. Mehr wollte ich nicht wissen. Danke für die Tipps zu Registry, aber das war nicht die Frage. Außerdem habe ich mich mit der Unit auseinander gesetzt. Zwar nicht als ich sie damals programmierte, aber zwischendurch doch.

Natürlich besteht beim Programmieren die Möglichkeit, daß es Fehler gibt, aber auf der anderen Seite gibt es auch die Möglichkeit fehlerfrei zu programmieren. Der Code in meiner Unit entfällt keine Fehler. Eigentlich könnte ich auch die try finally entfernen. Was soll da passieren? Ok, einer könnte bein String eine Integer eingeben, aber das merkt man schon beim programmieren. Also auch keine richtige Fehlerquelle. Hast du dir den Code angeguckt? In jeder Prozedur wird das Objekt erstellt und freigegeben. Es kann also keine Überschneidungen geben. Ich benutze einen Pfad der garantiert da ist. Wenn nicht, dann ist Windows im Eimer. Da kann es also keine Fehler geben. Erst wenn man die Registry manipuliert könne es kleine Probleme geben. "Software" könnte nicht die nötigen Rechte. Aber dann würden eigentlich kein Programm mehr funktionieren. Der Programmpfad zu wenige Rechte? Möglich, aber dann bringt mir OpenKey auch keine bessere Info.

Ich schätze, daß du einfach die TRegIniFile nicht kennst

Zitat:

Wird also mal zeit endlich die Unit mal zu überarbeiten.
Besteht keine Notwendigkeit.

Zitat:

Ich dene schon, dass es um deinen Code geht.
Garantiert nicht.

Zitat:

Doch das besagt, dass TRegIni versucht so zu arbeiten wie unter 16-Bit Windows 3.1x. Und das ist schon mehr als veraltet. Vista unterstützt keine 16-Bit Programme mehr (in wiefern das hier eine Rolle spielt, weiß ich nicht).
Diesen Kommentar hätte ich von sonstwem erwartet, aber nicht von dir. TRegIniFile wird von TRegistry abgeleitet. Wo siehst du da 16 Bit? Wo besteht das Problem sich vor so einem Kommetar den Quellcode der TRegIniFile anzugucken? Dann würde man eventuell andere Kommentare abgeben.

Es ist eigentlich schlimm, denn die Kommentare zeigen, daß man etwas sagt was üblich ist, aber sich nicht mit dem Problem beschäftigt.

DeddyH 28. Mär 2008 17:38

Re: Registry-Probleme unter Vista
 
Tja, was soll man dazu noch sagen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz