Entwickler-Ecke
Dateizugriff - Registrierung geht unter W7 nicht mehr ...
myownshadow - Do 29.10.09 23:47
Titel: Registrierung geht unter W7 nicht mehr ...
Hallo !
Bislang habe ich mein Programm immer wie folgt erfolgreich registrieren können:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TTurnierplaner.ExtRegistrieren(var Schluss : Boolean); var R: tWinRegistry; begin
R := TWinRegistry.CreateWithKey(HKEY_CLASSES_ROOT,''); Schluss := False;
try R.WriteString('.tnp','','Turnierplaner_Datei');
R.WriteString('Turnierplaner_Datei','',TPRegName);
R.WriteString('Turnierplaner_Datei\DefaultIcon','',Application.EXEName+',0'); R.WriteString('Turnierplaner_Datei\Shell\open\command','',Application.EXEName+' "%1"');
except MessageDlg('Sie benötigen Administratorrechte um das Programm zu registrieren !!!', mtError,[mbok],0); Schluss := True; end; R.CloseKey; end; |
Doch das geht plötzlich unter Windows 7 nicht mehr.
obwohl ich als Administrator angemeldet, werden mir die Schreibrechte verweigert.
Was muss ich nun anders machen ?
Vielen Dank
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 30.10.2009 um 10:49
elundril - Fr 30.10.09 00:24
Arbeitest du nur als Administrator oder forderst du auch Adminrechte an? ich glaub das is nämlich n unterschied.
lg elundril
Delete - Fr 30.10.09 01:52
Administrator ist seit Windows Vista nicht gleich Administrator. Erstmal ist ein Administrator auch nur ein normaler Benutzer. Er kann aber, wenn gefordert, administrative Rechte bekommen. Zum Beispiel wenn ein Manifest der Anwendung beiliegt, das diese administrativen Rechte für die Anwendung anfordert. Die Suche sollte hier alles weitere klären.
myownshadow - So 08.11.09 19:35
Ich habe nun einiges über Manifeste gelesen.
Mit dem Manifest-Creator (
http://www.delphipraxis.net/post1075571.html#1075571) habe Ich mir eines erstellt.
Das Einzige was aber passiert ist, dass meine Entwicklungsumgebung total abschmiert mit der Fehlermeldung: "Ungültige Prozess ID:0". Es hilft nur noch der Taskmanager ...
Datei Turnier.exe.manifest:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="6.6.1.1" processorArchitecture="X86" name="Private.Turnier.Turnierplaner" type="Win32"/> <description>Der kleine Turnierplaner benoetigt Adminrechte</description> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> </application> </compatibility> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> </dependentAssembly> </dependency> </assembly> |
Was läuft denn hier falsch ?
Mit abgeschalteter Benutzerkontensteuerung läuft das Programm unter W7 einwandfrei durch.
Vielen Dank.
jaenicke - So 08.11.09 19:54
Delphi kann keine Adminprozesse debuggen, wenn es selbst keine Adminrechte hat. Du musst Delphi also selbst mit Adminrechten starten.
Die bessere Alternative wäre nur für das Registrieren die Rechte anzufordern statt einfach immer die UAC aufgehen zu lassen, egal ob das nötig ist... :roll: (es sei denn der einzige Sinn des Programms ist diese Registrierung / Installation)
myownshadow - So 08.11.09 20:24
Ja, wenn ich mein Programm ohne Delphi starte, dann funktioniert es.
Deine Annahme ist richtig, ich benötige die Rechte nicht während des Programmlaufes. Sie sind immer nur dann notwendig, wenn ich in die Registry schreibe. Also beim erstmaligen Registrieren und abschließend wenn ich Programmeinstellungen speichern will.
Wie kann ich mir die Rechte denn setzen ?
jaenicke - So 08.11.09 20:28
Indem du die eigene Exe mit einem entsprechenden Parameter startest. Wenn du das mit ShellExecute machst und statt 'open' das Verb 'runas' angibst, werden Adminrechte angefordert. Ob du diese schon hast kannst du mit
IsUserAnAdmin [
http://msdn.microsoft.com/en-us/library/bb776463.aspx] feststellen.
Ist der Parameter angegeben führst du (im Projektquelltext, also Projekt --> Quelltext anzeigen) statt der Anzeige des Hauptformulars die Registrierung usw. durch.
Delete - So 08.11.09 20:46
myownshadow hat folgendes geschrieben : |
| wenn ich Programmeinstellungen speichern will. |
Wozu braucht man dazu administrative Rechte? Programmeinstellungen legt man normalerweise in HKCU ab oder was sind das für Programmeinstellungen?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!