Autor Beitrag
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Mo 23.04.07 23:20 
Hi!
Z.B. via Manifest kann ich ja Windows Vista sagen, dass mein Programm Admin- Rechte benötigt. Allerdings ist das dann 1. statisch festgelegt, dass es diese Rechte braucht und 2. wird das ganze schon zu Programmstart abgewickelt.
Ich kann in meinem Fall erst mitten im Programmablauf feststellen, ob die Admin- Rechte zum Beschreiben des Programme- Ordners notwendig sind, oder nicht.
In vielen Fällen wird das Programm vorher schlichtweg geschlossen und dann kommt es zu diesem Fall gar nicht.
Auf der anderen Seite wäre es für dein eigentlichen Programmablauf unglaublich störend, wenn zu Programmstart die Admin- Rechte verlangt würden.
Das klingt jetzt sehr komisch, ist aber so. Mein Programm, was Admin- Rechte braucht, ist ein Internet Updater. Dieser wird im Hintergrund z.T. sehr häufig gestartet (je nach Einstellung an jedem Start vom Hauptprogramm). Der Updater soll da erstmal im Hintergrund bleiben, solange keine neue Version vorliegt, beendet er sich auch gleich wieder selber. Liegt aber eine neue vor, soll er sich die Admin Rechte dann erst holen (bzw. nur dann, wenn er im Programme Ordner gespeichert ist).

Gibts dafür irgendeine Möglichkeit?
Eine zweite Echse einzusetzen, würde ich sehr gerne vermeiden.

Gruß
alias5000

_________________
Programmers never die, they just GOSUB without RETURN
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 24.04.07 01:23 
Guck mal, was passiert, wenn du an der entscheidenden Stelle Suche im MSDN IMPERSONATELOGGEDONUSER aufrufst:
www.michael-puff.de/...04/Impersonate.shtml
alias5000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Di 24.04.07 12:25 
hmm, ich habe deine Demo jetzt einfach mal so angepasst, dass ich versuche im Programme Ordner was zu schreiben (weil er bei mir die boot.ini nicht fand und ich sichergehen wollte, dass dies nicht an irgendwelchen anderen Restriktionen Vista's lag).
Benutzt habe ich dazu schlichtweg die Prozedur CreateDir('C:\Programme\Test');. Wenn ich nicht angemeldet bin, gibt sie mir true zurück. Bin ich (mit demselben Account) angemeldet (der ist ein Admin-Account mit aktivierter UAC), dann gibt CreateDir false zurück. Aber in beiden Fällen wird nichts erstellt.

Ich glaub ich brauche hier keine Funktion, um mich als Admin einzuloggen oder so (da das ganze ja auf LogonUser aufbaut), sondern, um der UAC zu sagen, dass ich die Adminrechte, die der Account ja schon hat, auch nutzen will. Oder so..
hmm

Gruß
alias5000

_________________
Programmers never die, they just GOSUB without RETURN
Dezipaitor
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220



BeitragVerfasst: Di 24.04.07 12:42 
Jedes Programm, welches nicht direkt als Administrator gestartet wird - also auch die Programme, die in Vista über ein zweites Token, zuwenig Rechte haben
genau diese Programme können niemals nachträglich Administratorrechte bekommen.

Man muss jedesmal einen neuen Prozess dafür erstellen, den man als Adminuser starten kann.
Man kann das ganz toll sehen, wenn man die Überwachung einer Datei in den Sicherheits-Eigenschaften ändern will. Die UAC zeigt dann einen Dialog mit dem Programmname (Explorer) an, der gestartet werden soll. In den erweiterten Details sieht man dann noch die COM-Guid (über COM-Moniker) oder Parameter an die neue Programminstanz.

Für den COM-Moniker musst du dein Programm an einigen Stellen in der Registry registrieren.
alias5000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Di 24.04.07 13:31 
D.h., ich kann die Adminrechte da wirklich nur am Start des Prozesses bekommen. Schade :(
Naja, dann mach ich mich mal ran, das Programm aufzusplitten.

Gruß
alias5000

_________________
Programmers never die, they just GOSUB without RETURN
Force
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 143

Ubuntu Jaunty
FreePascal
BeitragVerfasst: Mi 25.04.07 18:44 
Bring einfach irgendwo in der Programmbeschreibung oder im Programmnamen "Setup" oder "Update" unter und schon muss man Adminrechte unter Windows haben um das PRogramm zu öffnen ;)

_________________
There are 1010 kinds of people. Those who understand base-negative-1 notation, and those who do not.
Dezipaitor
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220



BeitragVerfasst: Mi 25.04.07 21:16 
Wenn du im Manifest explizit angibst, dass du keine Adminrechte brauchst, dann kommt der Dialog auch nicht.
alias5000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Mi 25.04.07 23:38 
user profile iconDezipaitor hat folgendes geschrieben:
Wenn du im Manifest explizit angibst, dass du keine Adminrechte brauchst, dann kommt der Dialog auch nicht.


Das muss ich gleich mal probieren. Das ist nämlich dann eine mögliche Antwort für ein anderes Problem von mir :D

_________________
Programmers never die, they just GOSUB without RETURN