2 votes

Java : Où écrire la configuration sans avoir besoin de droits administratifs

Je n'arrive pas à croire que je dise ça, mais depuis que j'ai porté mes programmes sur OSX et que je me suis habitué aux permissions, je me suis rendu compte que ce que j'avais prévu de faire sous Windows ne fonctionnera pas comme je le voudrais. Actuellement, sous Windows, mon programme stocke ses paramètres dans le registre (HKLM) et certaines ressources modifiables par l'utilisateur dans un dossier à côté du fichier du programme. Pour diverses raisons, j'ai maintenant décidé que la configuration/les paramètres seront stockés dans un fichier et que l'utilisateur pourra choisir le dossier dans lequel les autres ressources sont conservées.

La question que je me pose maintenant est de savoir où stocker le fichier de configuration. Il est évident qu'il sera mis à jour, mais je ne veux pas que le programme ait besoin des droits d'administrateur pour fonctionner. J'aimerais offrir une option pour que tous les utilisateurs puissent utiliser le programme (comme la plupart des programmes), ce qui nécessitera bien sûr des droits d'administrateur, ce qui m'amène à la deuxième question : où dois-je stocker le fichier de configuration (et le dossier dans lequel les autres ressources sont conservées) et comment puis-je détecter si le programme a été installé pour tous les utilisateurs ou pour un seul !

Merci d'avance

PS : Si vous n'avez pas deviné, le programme est écrit en Java et j'aimerais donc savoir comment obtenir par programme l'emplacement que vous suggérez.

4voto

Kal Points 2324

C'est une pratique normale dans les programmes compatibles *nix de stocker des informations dans des dossiers commençant par le nom . dans le répertoire personnel de l'utilisateur,

.bash_history
.bashrc

Vous pourriez utiliser la même chose sur OSX à mon avis et créer un répertoire disons,

.myapp

Vous pouvez stocker un nombre quelconque de fichiers de n'importe quel format dans ce répertoire.

Pour obtenir l'emplacement du dossier, vous pouvez effectuer les opérations suivantes

String homeDir = System.getProperty("user.home");
File myAppDir = new File(homeDir, ".myapp");

C'est en gros le code qui vous permet d'obtenir votre répertoire de configuration personnalisé pour votre application.

Veuillez noter que les fichiers / dossiers point sont quelque peu similaires aux dossiers cachés de Windows. Votre gestionnaire de fichiers n'affiche généralement pas ces fichiers/dossiers par défaut.

Pour identifier si le programme est installé pour tous les utilisateurs ou non, vous pouvez créer la configuration à un emplacement contrôlé par l'administrateur (Root) comme /etc (pas sûr pour Mac) La configuration de l'utilisateur peut toujours remplacer la configuration par défaut. Il pourrait y avoir une meilleure façon de gérer cela.

1voto

Tech Agent Points 657

Sous Windows et Unix, l'utilisateur (généralement) possède un dossier (personnel) sur lequel il a toutes les permissions. Vous pouvez créer un répertoire dans le dossier personnel et y faire résider vos fichiers de configuration utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X