2009-08-20 14 views
1

D'accord, j'ai un plugin pour IE qui, lorsqu'il est installé doit (avec la permission de l'utilisateur) redémarrer IE.Est-il possible d'abaisser le niveau de privilège lors de l'appel de CoCreateInstance sous Vista?

Pour ce faire, j'ai une DLL qui est appelée par le programme d'installation. Et cela fonctionne, mais le problème est que lorsque IE est redémarré sur Vista, il est redémarré avec les privilèges d'administrateur du programme d'installation, ce qui est un problème pour un certain nombre de raisons.

J'utilise CoCreateInstance pour démarrer IE, de sorte que j'obtiens une instance de l'interface IWebBrowser2 afin d'y effectuer certaines actions. Donc, ma question est, est-il possible d'appeler CoCreateInstance à partir d'une application qui est exécutée avec des privilèges d'administrateur, de telle sorte que l'instance d'objet COM hérite des privilèges d'utilisateur de base plutôt que des privilèges d'administrateur?

+0

Connaissez-vous SetThreadToken() qui peut emprunter l'identité d'un thread en tant qu'un autre utilisateur? – sharptooth

+0

Comme cela arrive généralement, je viens de trouver des informations à ce sujet après avoir posté cette question, et SetThreadToken semble faire partie de la solution. Je vais essayer maintenant et voir si cela fonctionne pour ce dont j'ai besoin. – Gerald

Répondre

1

D'accord, je trouve la solution d'ici:

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

De mon DLL d'installation que je dois lancer un nouveau thread, et usurper l'identité de l'utilisateur en cours sur ce fil, puis définissez un faible niveau d'intégrité et créez l'instance COM avec le contexte CLSCTX_ENABLE_CLOAKING.

+0

Etes-vous sûr de pouvoir republier le contenu d'autres sites ici? – sharptooth

+0

Je serais prudent en essayant de remonter le pointeur d'interface à partir de ce thread - stubs sont liés à l'appartement dans lequel ils ont été créés, et lorsque vous appelez CoUninitialize(), l'appartement est tué, et votre IWebBrowser2 stub aussi. Vous devez probablement garder le thread/appartement en vie tant que le pointeur d'interface est utilisé. –

+0

@sharptooth, bon point, j'ai supprimé le contenu et laissé juste le lien vers l'autre site. – Gerald

Questions connexes