2017-02-24 2 views
0

Donc, fondamentalement, mon programme Unity aurait besoin de modifier le fichier hosts sur OSX et qui nécessite un privilège d'administrateur. Et je suis l'exception suivante:Unity3d demande l'autorisation de l'utilisateur (OSX)

UnauthorizedAccessException: Access to the path "/private/etc/hosts" is denied. 

Comment puis-je pop un « XXX veut apporter des modifications: Entrez votre mot de passe pour le permettre. » fenêtre juste comme la capture d'écran ci-joint?

J'ai fait quelques Google mais je n'ai rien trouvé d'utile.

Toute suggestion serait appréciée.

enter image description here

+0

Le code a-t-il échoué? Avez-vous une exception? – Programmer

+0

@Programmer oui j'ai eu une exception, je viens de modifier la question. – libra

+0

Que se passe-t-il si vous l'exécutez en tant qu'admin sur Mac? – Programmer

Répondre

1

fait quelques recherches plus poussées, la seule solution que je peux penser de maintenant est d'écrire un plugin natif à l'aide Authorization service Apple, et l'appeler de programme Unité. Mais s'il y a une façon plus Unity de le faire, n'hésitez pas à l'ajouter en guise de réponse.

EDIT_1: mise à jour des progrès et une note à mon avenir.

Un plugin natif pour OSX est suffixé .bundle, je l'ai écrit en C++ (puisque l'exemple officiel est en C++), mais il n'a pas accès au service d'autorisation. Et je ne sais pas comment configurer OC pour un projet de bundle. Maintenant j'essaye une alternative pour créer une application d'outil de ligne de commande pour OS X et l'exécuter en tant que processus externe d'Unity3d. Bonne nouvelle, maintenant je peux utiliser swift pour l'écrire!

.

EDIT_2: mise à jour des progrès et une note à mon avenir.

L'outil de ligne de commande écrit en OC a fonctionné. Je peux simplement ouvrir l'outil de ligne de commande en utilisant Process.start (nom, argument) dans Unity3d.