WiX, UAC, verwaltete benutzerdefinierte Aktion und Identitätswechsel

8

Ich habe ein Windows Installer-Paket mit WiX 3.6 erstellt, das eine benutzerdefinierte verwaltete (C #) Aktion einbettet.

In diesem Stadium erfordert die Installation das

  1. Das Installationsprogramm wird mit einem bestimmten lokalen Administratorkonto ausgeführt (in diesem Fall dem SharePoint-Installationsprogrammkonto, bei dem es sich um einen lokalen Administrator handelt)
  2. Benutzerkontensteuerung deaktiviert sein

Es gibt keine Möglichkeit, die Anforderung # 1 zu umgehen, da die verwaltete Aktion nur dann bestimmte Schritte ausführen kann, wenn sie im Kontext des SharePoint-Installerkontos ausgeführt wird.

Ich möchte die Anforderung Nr. 2 entfernen und das Installationsprogramm ordnungsgemäß ausführen, auch wenn die Benutzerkontensteuerung aktiviert ist.

Ich habe das Problem ziemlich ausführlich untersucht, kann es aber immer noch nicht zum Laufen bringen. Ich habe InstallScope="perMachine" in meinem Paket festgelegt, was korrekt zur UAC-Erhöhung aufzufordern scheint, aber das Installationsprogramm schlägt immer noch mit dem berüchtigten 2869-Fehler fehl.

Das Hauptproblem besteht darin, dass meine benutzerdefinierte Aktion mit Impersonate="yes" konfiguriert ist, da sie im Kontext des aktuellen Benutzers und nicht des lokalen Administratorkontos ausgeführt werden muss. Wenn ich online suche, zeigen fast alle "Fixes" auf Impersonate="no" in der benutzerdefinierten Aktion, aber das ist keine Option für mich.

Meine Frage lautet daher: Gibt es eine Möglichkeit, eine benutzerdefinierte verwaltete Aktion mit der Identität des aktuellen Benutzers auszuführen, ohne dass die UAC vollständig deaktiviert werden muss?

    
Raphael Londner 16.10.2012, 18:04
quelle

2 Antworten

2

Wo verweisen Sie auf die benutzerdefinierte Aktion?

Das Ausführen von .msi mit erhöhten Rechten reicht möglicherweise nicht aus. Um sicherzustellen, dass Ihre benutzerdefinierte Aktion mit erhöhten Rechten arbeitet, müssen Sie auch eine verzögerte benutzerdefinierte Aktion verwenden und sie in InstallExecuteSequence referenzieren. Dies löst möglicherweise nicht Ihre Probleme, aber die unten verlinkten Artikel erläutern die UAC-Logiken während einer msi-Installation ausführlich.

Grundsätzlich enthält nicht alles, was das Installationsprogramm enthält, die Berechtigungen, und Sie müssen sicherstellen, dass die benutzerdefinierte Aktion ausgeführt wird, wenn das Installationsprogramm die erhöhten Berechtigungen verwendet.

Quelle: Ссылка

Ich hoffe, Sie finden diese Informationen nützlich. Ich könnte Ihnen bei der Freigabe Ihres benutzerdefinierten Aktionscodes behilflich sein.

    
Epiderma 13.08.2014 08:41
quelle
2

Wenn Sie Impersonate="yes" verwenden, wird Ihre benutzerdefinierte Aktion ohne Administratorrechte mit den Anmeldeinformationen des aktuell angemeldeten Benutzers ausgeführt.

Bei Impersonate="no" wird Ihre benutzerdefinierte Aktion im Systemkontext ausgeführt. Wenn die benutzerdefinierte Aktion im Systemkontext ausgeführt wird, hat sie vollen Zugriff auf das System.

Von der Dokumentation WiX CustomAction element , Impersonate -Attribut :

  

Dieses Attribut gibt an, ob der Windows Installer, der als LocalSystem ausgeführt wird, beim Ausführen dieser benutzerdefinierten Aktion den Benutzerkontext des installierenden Benutzers annehmen soll. Normalerweise sollte der Wert 'yes', sein, es sei denn, die benutzerdefinierte Aktion benötigt erhöhte Berechtigungen zum Anwenden von Änderungen auf den Computer.

    
Alexey Ivanov 20.10.2012 11:18
quelle

Tags und Links