| Autor |
Beitrag |
myownshadow
Hält's aus hier
Beiträge: 5
WIN XP, W7
Rad Studio 2010
|
Verfasst: Do 29.10.09 23:47
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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
Hält's aus hier
Beiträge: 5
WIN XP, W7
Rad Studio 2010
|
Verfasst: So 08.11.09 19:35
Ich habe nun einiges über Manifeste gelesen.
Mit dem Manifest-Creator ( www.delphipraxis.net...075571.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:
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
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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...  (es sei denn der einzige Sinn des Programms ist diese Registrierung / Installation)
|
|
myownshadow 
Hält's aus hier
Beiträge: 5
WIN XP, W7
Rad Studio 2010
|
Verfasst: 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
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 feststellen.
Ist der Parameter angegeben führst du (im Projektquelltext, also Projekt --> Quelltext anzeigen) statt der Anzeige des Hauptformulars die Registrierung usw. durch.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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?
|
|