ribrob
Goto Top

Micorsoft Application Compatibility Toolkit - Compatibility Administrator

Hallo,

bin derzeit auf der Suche, wie ich am elegantesten einen Weg vorbei an der Benutzerkonstesteuerung finde. Dabei scheint mir das o.g. Programm helfen zu können... Wenn ich eine bestimmte exe-Datei öffne, poppt immer die UAC auf, mit der Frage, ob ich Änderungen zulassen möchte - das möchte ich unterdrücken!

Folgendes habe ich bis jetzt versucht:
1. mit dem Compatibility Administrator ein Application Fix erezugt und exe-Datei (zB genau die exe des Compatiblity Administrators poppt es ebenfalls auf) ausgewählt (Zwischenfrage: Kann man eigentlich auch andere Dateitypen im verwenden (zB .bat)?)
2. Compatbility Mode: Nichts konfiguriert
3.Fixes: RunAsHighest
4. Fertig

Anschließend die Datenbank noch gespeichert und installiert.

Wenn ich im Compatibility Administrator teste, läuft startet die exe ohne Popup, also wie gewünscht. Doch wenn ich die exe aus dem Explorer öffne erscheint wieder die UAC-Frage - woran kann das liegen?????

Muss ich womöglich meine Einstellungen vom Compatibility Administrator noch in mein System übertragen? Wenn ja, wo denn?

Viele Grüße und danke für eure Hilfe

Content-ID: 212483

Url: https://administrator.de/contentid/212483

Ausgedruckt am: 24.11.2024 um 22:11 Uhr

DerWoWusste
DerWoWusste 26.07.2013 aktualisiert um 12:57:14 Uhr
Goto Top
Hi.

woran kann das liegen?
Ganz einfach: der Compatibility-Admin wurde von Dir bereits elevated (mit UAC-Abfrage) gestartet, deshalb hat er schon hohe Rehte und runashighest löst nichts mehr aus.
Run as highest bringt Dich jedoch eh nicht weiter, es fordert doch gerade die hohen Rechte an! Es wird dazu benutzt, Programme kompatibel zu machen, die diese hohen rechte eben gerade nicht von sich aus anfordern, Deines jedoch tut dies von sich aus.

Teste also die Einstellung runasinvoker. Wenn die geht und alle Funktionen des Programmes auch ohne erhöhte Rechte laufen, lass es so. Geht das nicht, schreib einen geplanten Task, die die exe startet und in diesem Task setzt Du den Haken bei "mit höchsten Privilegien ausführen". An Stelle der Verknüpfung erstellst du Dir dann eine Verknüpfung zum Task: schtasks /Run /tn DerTaskname
ribrob
ribrob 08.08.2013 um 07:53:30 Uhr
Goto Top
Mit RunAsInvoker funktioniert es unter meinem Kontext erstmal - allerdings nicht mit meiner eigens erzeugten exe-Datei, die ich per Batch-to-exe-Converter habe kompilieren lassen. Sie soll einfach ein paar Dateien in ProgramFiles kopieren, sie funktioniert über Ausführen als Administrator problemlos.

Und falls ich es per ACT doch hinbekommen sollte, wie kann ich die Datenbank deployen? Dazu fehlt mir leider noch der Ansatz...

Über den Scheduler habe ich auch schon nachgedacht, da funktioniert das auch alles problemlos. Könnte man einen Task deployen, ohne mich mit jedem Rechner per MMC zu verbinden und die Aufgabe zu importieren? Allerdings ist dieser Weg in meinem Fall sowieso nicht allzu günstig, da mit dem Copy-File eine Lizenzdatei in c:\ProgramFiles kopiert werden soll, was natürlich nicht nach einer bestimmten Aktion (zB Anmeldung) oder nach bestimmten Zeitplan durchgeführt werden soll, sondern nur wenn der Nutzer das Programm auch verwenden will/startet..

Konnte ich in etwa erklären, was ich möchte?
DerWoWusste
DerWoWusste 08.08.2013 um 10:19:55 Uhr
Goto Top
Hi.

Es ist nicht leicht, nach 2 Wochen noch zu wissen, worum es geht, versuche bitte schneller zu antworten. Die Datenbank (.sdb-Datei = der Appfix) kannst Du per Skript mittels sdbinst.exe deployen. Tasks kann man per Group Policy Preference (GPP) deployen.

Warum soll die Lizenzdatei nur kopiert werden, wenn gestartet wird und nicht schon im Vorfeld, zum Beispiel über GPP oder Startskript?
ribrob
ribrob 08.08.2013 aktualisiert um 13:10:09 Uhr
Goto Top
Sry, dafür antworte ich jetzt umso schneller ;)

Die Tipps mit dem deployen klingen doch schon mal vielversprechend. Auf die GPP-Sache hätte ich ja auch mal kommen können...
Wie würde zB die Syntax bei sdbinst.exe aussehen, wenn ich ein deploy machen möchte`?

Das problem mit:
"Mit RunAsInvoker funktioniert es unter meinem Kontext erstmal - allerdings nicht mit meiner eigens erzeugten exe-Datei, die ich per Batch-to-exe-Converter habe kompilieren lassen. Sie soll einfach ein paar Dateien in ProgramFiles kopieren, sie funktioniert über Ausführen als Administrator problemlos."
habe ich leider trotzdem noch - was mache ich nur falsch?

Können wir leider nicht beim Start verteilen, weil das Programm unter 3 verschiedenen Lizenzen laufen kann (classic, premium, design). Und derzeit (unter XP) starten die User eine Batch an, wo die jeweilige Lizenz vom Server nach lokal kopiert und in dem Zuge umbenannt (Name eben für alle 3 Lizenzen gleich) wird.

Um zu deinen Ausgangspost nochmal zurück zu kehren:
"An Stelle der Verknüpfung erstellst du Dir dann eine Verknüpfung zum Task: schtasks /Run /tn DerTaskname" verstehe ich leider nicht ganz. Aber abgesehen davon hat ein Standardbenutzer sowieso nicht die Rechte, auf C:\programfiles zu schreiben -.- Als administrativer Nutzer läuft der Task problemlos
DerWoWusste
DerWoWusste 08.08.2013 aktualisiert um 13:02:54 Uhr
Goto Top
 sdbinst deinpatch.sdb /q 

runasinvoker ist nur dann "still", wenn Du es als Admin ausführst. Haben die Nutzer keine Adminrechte, kommst Du mit compatibility fixes nicht weiter. Hier also den Ansatz mit einem Skript oder Task wählen, der mit hohen Rechten läuft und geeignet getriggert wird. Extremfall wäre, die exe des Programmes zu überwachen und bei Start der selbigen dann einen task auszulösen.
Könntest auch die NTFS-Rechte auf den Ordner verbiegen, damit Nutzer dort reinschreiben können - geht per GPO.
ribrob
ribrob 08.08.2013 um 14:03:26 Uhr
Goto Top
Zitat von @DerWoWusste:

runasinvoker ist nur dann "still", wenn Du es als Admin ausführst. Haben die Nutzer keine Adminrechte, kommst Du
mit compatibility fixes nicht weiter.

Also heißt das im Umkehrschluss, dass ACT in meinem Fall nicht hilfreich ist?!? Dann wäre ja auch das Erkunden von sdbinst nicht sinnvoll. Oder kann ich womöglich mit den anderen Fixes (RunAsHighest, RunAsAdmin) den Nutzer noch temporäre Rechte auf C:\ProgramFiles geben? Warum es zu den Fixes aber auch keine ausführliche Doku gibt...

Zitat von @DerWoWusste:

Hier also den Ansatz mit einem Skript oder Task wählen, der mit hohen Rechten läuft und geeignet getriggert wird. Extremfall wäre, die exe des > Programmes zu überwachen und bei Start der selbigen dann einen task auszulösen.

Aber selbst der geplante Task, den ich bereits mit höheren Privilegien angelegt hatte, lief ja unter Standardnutzer nicht. Da hilft mir dann das gezielte triggern auch nichts mehr, oder? Und demzufolge auch die Überwachung der exe nicht (zumal das sicher nicht gerade trivial ist).

Könntest auch die NTFS-Rechte auf den Ordner verbiegen, damit Nutzer dort reinschreiben können - geht per GPO.

Das scheint mir noch eine weitere Möglichkeit zu sein. Würde ich ausprobieren, wenn ACT und Scheduler mir wirklich nicht weiter helfen
DerWoWusste
DerWoWusste 08.08.2013 um 14:53:48 Uhr
Goto Top
-Die ACT-Doku findest du im Netz.
-ACT ist hier nicht hilfreich, denn es handelt sich um einen Kompatibilitätsfix, den man damit erstellt - Du hast aber keine Inkompatibilität vor Dir, sondern lediglich Nutzer ohne Adminrechte. Das hattest Du aber anfänglich nicht geschrieben, deshalb haben wir diese falsche Spur weiterverfolgt.

Zum Task: erstell ihn und schreib als ausführendes Konto: system
rein. Dann ändere die Rechte auf die Datei des Tasks unter c:\windows\system32\tasks per GPO so, dass Nutzer Ausfühhrechte bekommen. Dann deploye eine Verknüpfung zum Task mit dem bereits genannten Ziel:
schtasks /Run /tn DerTaskname
Der Task ermöglicht nun jedermann dorthin zu schreiben.
ribrob
ribrob 08.08.2013 um 16:02:55 Uhr
Goto Top
Zitat von @DerWoWusste:
-Die ACT-Doku findest du im Netz.

Aber nicht mit der Beschreibung der einzelnen Fixes, sondern nur eine allgemeine Doku?!?

-ACT ist hier nicht hilfreich, denn es handelt sich um einen Kompatibilitätsfix, den man damit erstellt - Du hast aber keine
Inkompatibilität vor Dir, sondern lediglich Nutzer ohne Adminrechte. Das hattest Du aber anfänglich nicht geschrieben,
deshalb haben wir diese falsche Spur weiterverfolgt.

OK. Da wir noch nicht allzu viele Rechner von XP auf Win7 gehoben haben, werde ich es so machen, dass die Nutzer auf die/den betroffenen Ordner die Rechte erhalten (so wie es unter XP auch der Fall war). Dann könnte das mit ACT widerrum klappen, oder?!?


Zum Task: erstell ihn und schreib als ausführendes Konto: system
rein. Dann ändere die Rechte auf die Datei des Tasks unter c:\windows\system32\tasks per GPO so, dass Nutzer
Ausfühhrechte bekommen. Dann deploye eine Verknüpfung zum Task mit dem bereits genannten Ziel:
schtasks /Run /tn DerTaskname
Der Task ermöglicht nun jedermann dorthin zu schreiben.

Und wenn das immer noch nicht mit ACT klappt, dann gehe ich deinen guten Hinweis mit den Tasks an. Wobei das sicher mit dem auslösenden Ereignis für den Task eine aufwendige Sache werden wird.


Ich werde mich dazu morgen nochmal melden und von meinen Ergebnissen berichten!
DerWoWusste
DerWoWusste 08.08.2013 um 17:09:53 Uhr
Goto Top
LAss ACT raus, es bringt Dich nicht weiter.
ribrob
ribrob 16.08.2013 um 07:42:07 Uhr
Goto Top
Ich habe das Problem jetzt so gelöst, dass die Nutzer in den betroffenen lokalen Ordner Ändern-Rechte besitzen. Somit umgehe ich die UAC... So war es unter XP auch geregelt.

Sicherlich nicht die eleganteste Lösung, aber eine aus meiner Sicht vertretbare.

Danke für alle die guten Tipps, habe auf jeden Fall neue Erkenntnisse erhalten!!