2012-09-25 1 views
1

J'utilise du code Java pour installer un programme EXE sur Win8, en exécutant cette commande "java -jar installapp.jar" dans CML. La fenêtre de ligne de commande n'est PAS ouverte par "Exécuter en tant qu'administrateur", mais l'utilisateur actuel est membre du groupe administrateur.L'installation a échoué en raison d'un privilège faible sur Win8

Cependant, dans la même fenêtre CML, si j'installe le fichier EXE directement, cela fonctionne. Il échoue juste lorsque l'installation est exécutée par Java.

Donc, n'importe qui peut me donner un pourboire?

Merci beaucoup, Michael

Répondre

0

Pour installer correctement une application qui comprend l'écriture dans les zones protégées par le système ne peut se faire sans élever par l'UAC. Cela signifie que la fenêtre CML doit être Exécuter en tant qu'administrateur.

Les exécutables Java sont marqués d'un manifeste qui demande des privilèges asInvoker. Ainsi, le processus commencerait par l'abandon des jetons administrateur si le processus parent n'était pas élevé. C'est tout l'intérêt de l'UAC: même si vous êtes membre du groupe Administrateurs, vous n'obtenez pas les privilèges illimités jusqu'à ce que vous l'éleviez.

Qu'entendez-vous par "installer l'exe directement"?

+0

Merci pour la réponse! Par "installer l'exe directement", je voulais exécuter appinstall.exe directement dans CML, au lieu de la chaîne d'appel "CML-> Java-> fichier Jar-> appinstall.exe". Maintenant j'ai élevé le priviledge et peux faire l'installation, cependant, je ne veux pas courir en tant qu'administrateur, mais juste élevé avec un priviledge particulier qui peut se relier le support, installer l'application, écrire des dossiers de système. Est-ce que Microsoft fournit un moyen d'atteindre ce contrôle d'accès fin? Merci –

+0

C'est un peu bizarre ... Et si vous exécutez 'appinstall.exe' directement dans CML, il est capable d'écrire dans Program Files. Ma conjecture est que dans ce cas 'appinstall.exe' est exécuté avec Virtualization on, et écrit réellement' VirtualStore' au lieu de l'emplacement prévu. –

+0

Contrôle d'accès à grain fin? Les deux oui et non. Vous pouvez configurer votre système de façon à ce qu'un utilisateur, même administrateur, n'ait accès qu'à certaines parties du système. Cependant, en tant qu'administrateur, il est possible de remplacer ces autorisations. Habituellement, vous pouvez vous connecter à une socket (à moins que le pare-feu nie). Mais pour installer des applications dans tous les utilisateurs, ou dans le système, vous devez les élever pour avoir tous les droits d'administrateur. Il n'y a pas besoin d'élever pour les installations par utilisateur. L'écriture de fichiers système est déconseillée, vous ne devriez pas le faire: vous pouvez casser le système ou d'autres applications. –

Questions connexes