Dans mon projet, je dois créer des fichiers et des répertoires dans mon dossier d'application qui se trouve dans les fichiers programme. Mais à Vista, il me donne une erreur que je n'ai pas accès à créer un fichier. Que dois-je faire maintenant pour donner accès? Aussi, il ne me laisse pas accéder au registre !!C# Vista ne donne pas accès au dossier de création
Répondre
Le dossier du programme n'est pas l'emplacement où stocker les données d'application. Il y a un dossier% APPDATA% pour cela - vous êtes censé y stocker vos données.
Utilisez System.Environment.SpecialFolder et System.Environment.GetFolderPath pour obtenir le chemin menant au bon répertoire. Vous devez également faire la différence entre la création d'un dossier et la mise en place de certains fichiers (par exemple lors de l'installation) ou l'écriture dans le dossier du programme lors de l'exécution, tout en étant généralement sous un compte limité.
La raison de cette différence est simplement que les routines d'installation et les configurations s'exécutent avec des privilèges élevés sous Vista/Windows 7, ce qui leur permet d'y créer des dossiers et des fichiers. Cependant, ces fichiers ne sont pas supposés être écrits lors de l'exécution de votre application.
Alors, que voulez-vous faire? Écrire des données à l'exécution, ou mettre certains fichiers (c'est-à-dire les dépendances) dans votre dossier d'application en même temps? S'il s'agit du premier, respectez les règles et utilisez le dossier% APPDATA%. Si c'est la seconde, créez une routine d'installation/installation.
et qu'en est-il de l'accès au registre? Cela m'empêche aussi d'écrire quoi que ce soit dans le registre ... – Barun
Même chose - vous écrivez probablement au mauvais endroit dans le registre. S'il vous plaît lire un article sur le nouveau UAC, la virtualisation et le modèle de sécurité dans Vista et vers le haut. Vous ne pouvez pas simplement implémenter un logiciel comme vous le faisiez auparavant, en ignorant les changements.Voici un début: http://msdn.microsoft.com/en-us/library/bb756960.aspx –
Vous devez écrire dans la ruche HKEY_Current_User –
Pouvez-vous éteindre l'UAC? Ou se connecter en tant qu'administrateur? Les chances sont que vous créez le dossier au mauvais endroit.
Mon client est très en colère contre moi parce que d'autres logiciels le font parfaitement Mais pas le mien. – Barun
Non, ce n'est que le fichier programme et mon dossier d'installation. – Barun
La désactivation de l'UAC n'est jamais une solution. Attendre que vos clients le fassent est encore pire. – Zooba
Vista et Win 7 ont le dossier Program Files verrouillé de sorte que vous ne pouvez pas écrire avec un compte d'utilisateur de base. Si vous avez besoin de créer des dossiers, vous devriez le faire dans le programme d'installation. Sinon, vous pouvez utiliser le dossier Application Data de l'utilisateur dans son profil. La seule manière consiste à modifier les autorisations sur le dossier d'installation au moment de l'installation.
Mais d'autres logiciels le font pourquoi je ne peux pas? – Barun
Cette restauration est-elle réservée au dossier? Puis-je créer des fichiers dans le dossier de mon application après l'installation? – Barun
+1, mais j'éviterais de modifier les permissions du dossier et d'inclure tous les fichiers dans le programme d'installation ou de les stocker ailleurs. – Zooba
Pouvez-vous décrire où vous essayez de créer le dossier et quel type de données il peut contenir. Il y a presque certainement un endroit différent qui est accessible. – spender
seulement quelques dossiers pour les fichiers journaux dans le fichier programme + mon dossier d'installation – Barun