2009-08-20 2 views
1

Okay, ich habe ein Plugin für IE, das, wenn es installiert ist, IE (mit der Erlaubnis des Benutzers) neu starten muss.Ist es möglich, die Berechtigungsstufe beim Aufruf von CoCreateInstance unter Vista zu verringern?

Dazu habe ich eine DLL, die vom Installer aufgerufen wird. Und es funktioniert, aber das Problem ist, dass wenn IE unter Vista neu gestartet wird, es mit den Administratorrechten des Installers neu gestartet wird, was aus einer Reihe von Gründen ein Problem ist.

Ich benutze CoCreateInstance, um IE zu starten, so dass ich eine Instanz der IWebBrowser2-Schnittstelle bekomme, um einige Aktionen darauf auszuführen.

Meine Frage ist also, ist es möglich, CoCreateInstance von einer Anwendung, die mit Administratorrechten ausgeführt wird, auf eine Weise aufzurufen, dass die resultierende COM-Objektinstanz die Basisbenutzerberechtigungen anstelle der Administratorberechtigungen der aufrufenden Anwendung erbt?

+0

Ist Ihnen SetThreadToken() bekannt, das einen Thread als einen anderen Benutzer ausgeben kann? – sharptooth

+0

Wie immer passiert, habe ich gerade einige Informationen darüber gefunden, nachdem ich diese Frage gestellt habe, und SetThreadToken scheint Teil der Lösung zu sein. Ich werde es jetzt versuchen und sehen, ob es für das, was ich brauche, funktioniert. – Gerald

Antwort

1

Okay, fand ich die Lösung von hier:

http://social.msdn.microsoft.com/Forums/cs-CZ/ieextensiondevelopment/thread/78a2bc18-1920-4e58-af7e-48dbcebe7643

Aus meiner Installer DLL muss ich einen neuen Thread starten, und auf diesem Thread den aktuellen Benutzer ausgeben, und dann einen niedrigen Integritätslevel , und erstellen Sie die COM-Instanz mit dem CLSCTX_ENABLE_CLOAKING-Kontext.

+0

Sind Sie sicher, dass Sie Inhalte von anderen Seiten hier erneut veröffentlichen können? – sharptooth

+0

Ich würde vorsichtig versuchen, den Interface-Zeiger von diesem Thread zurück zu marschieren - Stubs sind an die Wohnung gebunden, in der sie erstellt wurden, und wenn Sie CoUninitialize() aufrufen, wird die Wohnung getötet, und Ihr IWebBrowser2 stub auch. Wahrscheinlich müssen Sie den Thread/die Wohnung so lange am Leben halten, wie der Schnittstellenzeiger verwendet wird. –

+0

@Sharptooth, guter Punkt, löschte ich den Inhalt und nur den Link auf die andere Seite. – Gerald

Verwandte Themen