Autor |
Beitrag |
alias5000
      
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)
|
Verfasst: 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
|
Verfasst: Di 24.04.07 01:23
Guck mal, was passiert, wenn du an der entscheidenden Stelle IMPERSONATELOGGEDONUSER aufrufst:
www.michael-puff.de/...04/Impersonate.shtml
|
|
alias5000 
      
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)
|
Verfasst: 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
      
Beiträge: 220
|
Verfasst: 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 
      
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)
|
Verfasst: 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
      
Beiträge: 143
Ubuntu Jaunty
FreePascal
|
Verfasst: 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
      
Beiträge: 220
|
Verfasst: Mi 25.04.07 21:16
Wenn du im Manifest explizit angibst, dass du keine Adminrechte brauchst, dann kommt der Dialog auch nicht.
|
|
alias5000 
      
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)
|
Verfasst: Mi 25.04.07 23:38
Dezipaitor 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 
_________________ Programmers never die, they just GOSUB without RETURN
|
|
|