Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 24.07.11 15:35 
Hallo!

Ich möchte ein Programm schreiben, das die Berechtigungen für Keys in der Registry für Benutzer mit eingeschränkten Rechten auf "Vollzugriff" ändert.

Wie kann ich aus meinem Programm heraus den Windows-eigenen "Berechtigungen für"-Dialog starten? Diesem muss der Key, für den die Berechtigungen gesetzt werden soll, übergeben werden. Das eigentliche Setzen soll also manuell vorgenommen werden, den Rest erledigt Windows.

Es handelt sich um folgende zwei Keys:
HKEY_LOCAL_MACHINE\SOFTWARE\L&H\G2P und HKEY_LOCAL_MACHINE\SOFTWARE\L&H\TTS\V6.0\Voice.

Der Grund: Standardmässig haben nur Admins Vollzugriff, daher funktioniert die deutsche Sprachausgabe mit L&H nur unter einem Admin-Konto. Man muss für beide Keys und zusätzlich für die Ordner \WINDOWS\Lhsp und \WINDOWS\Temp Vollzugriff für eingeschränkte Benutzer setzen. Mit einem Programm kann man das doch einfacher erledigen.

Siehe auch: www.mz-translator.de/faq/faq.php?id=97

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
acnut
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 172
Erhaltene Danke: 3

Windows 7, Windows Vista, Windows XP, Ubuntu, Kubuntu, Pardus
Delphi 2010 SV, Java Editor, VS 2010 SV
BeitragVerfasst: So 24.07.11 18:14 
ich weiß nicht ob ich die frage selber richtig kapiert hab, aber:
du kannst ja dein programm gleich mit admin-rechten starten in dem du eine manifest-datei einbindest oder z.b die jedi komponenten installierst.
noch eine möglichkeit wäre es einfach mit shellexecute in dem du 'runas' statt den anderen parametern benutzt damit kannst du deine eigene anwendung als admin starten oder andere anwendungen als administratopr starten lassen ;)

ich weiß nicht ob ich dir iwie helfen konnte, falls nicht dann hab ich deine frage falsch verstanden. also wenn ich mit meiner "hilfe" falsch liege dann bitte ich um verständnis ;)


mfg
acnut

_________________
Hey, die Sonne scheint, da werd ich mal in kurzen Hosen fernsehn…
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2562
Erhaltene Danke: 46

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 24.07.11 18:53 
user profile iconacnut hat folgendes geschrieben Zum zitierten Posting springen:
ich weiß nicht ob ich die frage selber richtig kapiert hab, aber:
du kannst ja dein programm gleich mit admin-rechten starten
Ja, dann klappt es natürlich in jedem Fall!

Ich habe also ein Programm, das die ActiveX-Komponente TTextToSpeech nützt und dazu diese Rechte braucht. Meine Idee ist nun, ein Tool zu schreiben, das man als Admin 1x ausführt und das diese Rechte setzt. Dann läuft mein eigentliches Programm (das mit TTextToSpeech) problemlos und "spricht" deutsch, ohne diese Rechte nur englisch.

Nun ist es ja nicht so, dass man die Zugriffsrechte jeden Tag neu setzen muss, sondern nur 1x und gut ist's. Natürlich kann man diese Rechte auch manuell setzen, hab' ich ja getan, siehe den Link im ersten Post. Aber es wäre halt schön, ein solches Hilfstool selbst zu schreiben. Aber zugegeben: Wirklich nötig ist das nicht.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
acnut
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 172
Erhaltene Danke: 3

Windows 7, Windows Vista, Windows XP, Ubuntu, Kubuntu, Pardus
Delphi 2010 SV, Java Editor, VS 2010 SV
BeitragVerfasst: So 24.07.11 19:23 
ich selber benutze in meinem win7tool diese funktion:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function IsAdmin: Boolean;
const SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (000005));
      SECURITY_BUILTIN_DOMAIN_RID = $00000020;
      DOMAIN_ALIAS_RID_ADMINS = $00000220;
      SE_GROUP_ENABLED = $00000004;
var hAccessToken: THandle;
    ptgGroups: PTokenGroups;
    dwInfoBufferSize: DWORD;
    psidAdministrators: PSID;
    x: Integer;
    bSuccess: BOOL;
begin
Result:= False;


oder du machst es wie ich schon sagte:
1)manifest
2)jedi komponente (ich bin mir nicht sicher, aber ich glaub mit dem jwawindows.pas?! ;))
3)shellexecute mit 'runas' als parameter

_________________
Hey, die Sonne scheint, da werd ich mal in kurzen Hosen fernsehn…