![]() |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Ergebnis: Exception, Key wird nicht erstellt. Projekt dann über Speichern als in d:\RegTest\RegTest.dproj gespeichert. Ergebnis: Key wurde erstellt. Habe danach beide Regtest.exe verglichen. Gleiche Größe, aber nicht gleicher Inhalt: ![]() ![]() c:\RegTest\Regtest.exe nach d:\RegTest\Regtest.exe kopiert, läuft, Key wird erstellt. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Ich kann mich noch erinnern, entweder war es Delphi 1 auf Delphi 3 oder Delphi 2 auf Delphi 3, aber plötzlich funktionierte die Hälfte meiner Programme nicht. Der Grund war schnell gefunden. Ich hab vorher die ganze Zeit irgendwo einen kleinen Fehler gemacht (eine Zeile war falsch). Sonderbarerdweise hat Delphi 1 (oder 2) den Fehler geschluckt, da aufgrund eines internen Fehlers mein Fehler nicht so eng gesehen wurde. Bei Delphi 3 hat man Fehler dann beseitigt, und ich musste alles korrigieren.
Sowas kann auch vorkommen. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Was passiert wenn du '\Software\Vendor\Productname' in '\Software\Vendor2\Productname' änderst? |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Langsam gehen mir die Ideen aus, denn das ist echt seltsam, und es hängt ja ganz offensichtlich vom Pfad ab, in dem die EXE liegt. Einen hab ich noch: Lokale Sicherheitsrichtlinie (secpol.msc) > Richtlinien für Softwareeinschränkung > Zusätzliche Regeln. Was stehen dort für Regeln bzw. weisen diese auf irgendwelche Pfade hin?
Zitat:
@Popov: Also wenn er ein neues Projekt erstellt hat und mit den drei Zeilen von dir ebenfalls nur eine Exception bekommt, ist da ein bisschen mehr faul als nur ein kleiner Fehler im eigenen Code. Zitat:
Zitat:
MfG Dalai |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Besitzer ist Administrators (WORK\Administrators) (der auch eingelogt ist).
"Was passiert wenn du '\Software\Vendor\Productname' in '\Software\Vendor2\Productname' änderst?" Es ändert sich natürlich nichts. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Sorry, du hast es vermutlich irgendwo erwähnt, aber mit welcher Windowsversion bist du unterwegs? Ich hab da etwas mit 7 x64 und 8.1 x64 gesehen. Ist das so?
Es gibt zwar allgemein das Konto "Administrator", aber das ist meiner Meinung nach versteckt. Unter XP konnte man da nur mit Tricks ran. Es war das Reserve-Adminkonto. Wie das unter 7 und 8 ist, weiß ich aber nicht. In der Regel gibt es da auch das Konto Besitzer und Ersteller. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Es ist Windows 7 x64. Mit den versteckten Admin meinst du wahrscheinlich den User SYSTEM (der mit Root von Unix vergleichbar ist, Admin hat ja bei weitem nicht alle Rechte).
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Popov, jetzt bringst du aber einiges durcheinander.
Zitat:
Zitat:
Zitat:
Zitat:
MfG Dalai |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Nein, ich meine wirklich das Konto "Administrator". Unter XP existiert das, ist aber im Willkommenfenster nicht sichtbar. Um es aufzurufen muss man eine Anmeldeform wählen in der man den Benutzer selbst eingeben kann.
Unter Windows 7 sieht es ähnlich aus. Es ist ein verstecktes Konto. Deshalb wundert es mich. Eigentlich kann man kein Konto "Administrator" erstellen, weil es schon da ist. Man kann es aber in der Regel auch nicht so einfach auswählen. Bist du sicher, dass dein Konto "Administrator" ist? Oder hat es nur Administrator-Rechte? |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Was du meinst ist das dauerhafte Anzeigen von "Administrator" im Willkommenbildschirm. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Ihr seht da mehr als ich - aber der TE ist nicht mit dem vordefiniertem Administrator Konto angemeldet (oder er hat sich zwei mal vertippt):
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
@Popov: Nein, es ist schon so, wie ich sage. Dass das Adminkonto im Willkommensbildschirm nicht sichtbar ist, ist wieder eine andere Sache, die nicht mit dem übereinstimmen muss, ob ein Konto aktiviert ist oder nicht. Sobald unter Win7 der vordefinierte Administrator (und nur um den geht's) aktiviert wird, ist der im Anmeldedialog sichtbar. Lassen wir das, denn das ist OT, und unwichtig, denn Shark99 ist als Admin angemeldet, egal mit welchem.
Zitat:
MfG Dalai |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Delphi-Quellcode:
Deswegen macht Delphi das für Diejenigen. :angle2:
destructor TRegistry.Destroy;
begin CloseKey; inherited; end; |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Tja, dann bleibt nur noch, genauer zu untersuchen, was die EXE macht bzw. wie das aus Sicht des OS aussieht, inwiefern sich die beiden EXEn unterschiedlich verhalten (bzw. dieselbe an unterschiedlichen Orten). Das kann man mit Process Monitor machen, wie bereits von jaenicke in Post #4 vorgeschlagen.
MfG Dalai |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Ist es so, dass allgemein alle Programme die auf dem Laufwerk kompiliert wurden Probleme haben, oder ist es nur dieses Programm?
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Gruß K-H |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Womit sich die Frage stellt was vor einem Monat passiert ist?
Gehen wir mal davon aus, dass der Fehler nicht im Code ist, denn sonst würde auch mein Dreizeiler nicht funktionieren, muss das Problem irgendwo anders liegen. Hättest du Probleme eine Datei zu erstellen, wäre die Sache klar, das liegt an den Rechten des Kontos über den Ordner. Übrigens, man kann auch die Rechte von Administratoren reduzieren, nur das schöne ist, sie können sich, soweit man sich wiederum nicht das Recht Rechte zu ändern entzogen hat, die Rechte wieder geben. Also Administrator-Rechte alleine sagen nichts auf. Auf der anderen Seite hast du ein Bild gepostet und danach sollte alles ok sein. Übrigens, fast ähnlich wie im Explorer, kann man auch Rechte in Regedit vergeben und entziehen. Es wäre somit interessant zu sehen was die einzelnen User für Rechte in Regedit haben. Kommen wir von FAT32 Lw D: zu NTFS Lw C:. Erstellst du das Programm auf Lw D:, erstellst du es im Grunde unter dem Benutzer "Jeder". Kopierst du es (nicht verschieben) auf Lw C:, müssten im Grunde die Rechte des aktuellen Nutzers angenommen werden. Kommen wir zu einer unwahrscheinlichen aber durchaus möglichen Möglichkeit. Ich beziehe mich hier auf die unterschiedlichen Dateien unter Lw D: und Lw C:. Theoretisch könnte ja sein, dass man keine Leserechte an einer Unit hat. Das Problem wäre in dem Fall nicht der Ordner in dem du etwas kompilierst, sondern der Zugriff auf einen anderen Ordner, z. B. in Programme. Die Möglichkeit hat aber einen Hacken: ich dem Fall dürftest du auch nicht korrekt auf Lx D: kompilieren. Ich empfehle dir noch einen Test. Geh unter Systemsteuerung auf Benutzer. Erstelle zwei Konten. Das eine Shark99A mit Standardrechten. Dabei geht nichts kaputt, du kannst das Konto anschließend inkl. erstellte Dateien wieder löschen. Dann erstellst du noch ein zweites Konto, Shark99B, mit Administratorrechten. Geh dann auf "Einstellung der Benutzerkontensteuerung" und stelle alles runter (es wird nichts mehr geblockt). Sollte das das Programm bereits mit Shark99A funktionieren, ist in deinem Standardkonto etwas mit den Rechten durcheinander. Sollte es bei Shark99B funktionieren, wird da etwas geblockt. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Gruß K-H |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Habe einen neuen Admin-User erstellt und er hat genau das gleiche Problem. Habe dazu noch bemerkt dass es sich nicht nur um ein Registry Problem handelt, sondern Dateien können auch nur gelesen, aber nicht geschrieben werde. D.h. eine Exe die von einem Verzeichnis gestartet wird, bei dem der Parent nicht älter als 07.04.2015 ist hat nur Lesezugriff auf die gesamte Festplatte. Ich werde wohl um eine Neuinstallation von Windows drin drumherum kommen. Warte aber wohl noch auf Windows 10.
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Ich blicke nicht mehr durch. Könntet du mal bitte eine Zusammenfassung der bisherigen Erkenntnisse verfassen?
Aber wenn es um die Registry geht, spielen doch Verzeichnisrechte keine Rolle. :roll: Guck dir mal in der Registry an wer welche Rechte für den Schlüssel hat. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zusammenfassung aller Erkenntnisse:
- es handelt sich nicht um ein Delphi Problem, sondern ein Windows Problem und muss am 07.04.2015 bei mir passiert sein - ich bin als Admin-user eingelogt, kann mit dem Explorer alle Programme starten, kopieren, Dateien löschen etc, auch in Systemverzeichnissen - Anlegen eines zweiten Admin-Accounts hilft nicht - das folgende Problem betrifft nur c:\, mit d:\ geht alles wunderbar (andere Partition auf gleicher SSD) Problem: Wenn eine beliebige Executable (also auch notepad.exe) aus einem Verzeichnis ausgeführt wird dessen Parent-Verzeichnis nach dem 07.04.2015 erstellt wurde, hat diese App nur Leserechte und zwar sowohl für die Registry als auch beim Schreiben von Dateien. Beispiel a: 1. c:\ordner1 wird erstellt 2. notepad.exe hin kopiert und gestartet 3. Datei -> Speichern als -> My Documents: Notepad meldet dass ich keine Zugriffsrechte zum Speichern habe. Rechtsklick auf notepad.exe und 'Run as administrator' bringt gleiches Ergebnis. Beispiel b: alles wie im Beispiel a, aber Ordner nicht c:\ordner1 sondern c:\windows\ordner1 und es treten keinerlei Probleme auf, weil c:\windows VOR dem 07.04.2015 erstellt wurde. Ich habe mittlerweile 10 Stunden gegoogelt und das Problem nicht noch einmal gefunden. Also bleibt wohl nur Neuinstallation. :roll: |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Du hast einen zweiten Admin-Konto erstellt. Hast du das Ganze auch mit einem Standard-Konto getestet?
Hier gilt nicht Admin = mehr Rechte, also kann man sich das Standard-Konto sparen. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Ja, hatte auch einen normalen User erstellt, dieser hatte aber das Problem auch.
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Wenn du Lust hast, noch ein Test. Lade und installiere mal das Tool
![]() Achso, solltest du das Programm installieren, es fügt ein Eintrag in das Kontextmenü des Explorers. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Wie schon gesagt:
Das einzig sinnvolle um wirklich festzustellen wo der Unterschied liegt, ist den Process Monitor zu starten und nachzuschauen... |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
Kompletter Log angehängt.
00:23:08,3852819 RegTest.exe 8972 RegCreateKey HKCU\Software\VendorTest\ProductnameTest ACCESS DENIED Desired Access: All Access
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Liste der Anhänge anzeigen (Anzahl: 1)
Das ganze noch auf d:\ statt c:\
Delphi-Quellcode:
00:31:26,9658857 RegTest.exe 6752 RegCreateKey HKCU\Software\VendorTest\ProductnameTest SUCCESS Desired Access: All Access, Disposition: REG_CREATED_NEW_KEY
Logfile angehängt. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Edit: Und was die Registry angeht, die Angabe "access denied" bestätigt nur das was wir schon die ganze Zeit vermutet haben. Der Zugriff wird verweigert, nur warum? Ich gehe natürlich davon aus, dass du alle Schlüssel im Registry-Pfad auf Berechtigungen überprüft hast (Schlüssel wählen, rechte Maustaste, im Kontextmenü auf Berechtigungen klicken). Es kann kein "access denied" geben ohne dass es da steht. |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Es gibt in HKEY_CURRENT_USER eine Berechtigung "EINGESCHRÄNKTER ZUGRIFF", welche keine Schreibrechte besitzt.
k.A. wie und warum ein Programm dort reinrutschen könnte. aber Google meint ![]() Taskmanager > Prozesse > Menü: Ansicht > Spalten > Datenausführungsverhinderung und Virtualisierung |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Im Log sieht man, dass der eine Prozess eine hohe Integritätseinstufung hat und der andere eine niedrige.
Mehr dazu findest du hier: ![]() Ich kann das reproduzieren indem ich auf einem Testrechner die UAC ausschalte. Leider reicht es nicht diese danach wieder zu aktivieren. Das Verhalten ist danach trotzdem so. Solche und ähnliche Probleme hatte ich durch das Ausschalten der UAC schon mehrfach, auch bei Kunden (sowas macht man ja auch nicht). Eine Lösung, solltest auch du die UAC deaktiviert haben, habe ich leider nicht (außer eine Neuinstallation). Versuchen kannst du auf Kommandozeile:
Code:
icacls regtest.exe /setintegritylevel High
(mit Adminrechten) |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
:roll: Zitat:
Gruß K-H |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
![]() |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
Aber icacls regtest.exe /setintegritylevel High hat geholfen! Damit kann RegTest.exe auch in c:\RegTest den Registry-Key anlegen! |
AW: TRegistry Unterschied zwischen Delphi 7 und 2009
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz