2010-09-21 7 views
2

Je travaille sur une application de démonstration SQL Compact, et l'une des choses que mon projet d'installation fait est de copier un fichier SDF dans le dossier c:\ProgramData de l'utilisateur. Toutefois, lorsque l'application est exécutée sur la machine de l'utilisateur, je reçois l'erreur suivante:Violation de sécurité dans c: ProgramData?

System.Data.EntityException: The underlying provider failed on Open. ---> System.Data.SqlServerCeException: Access to the database file is not allowed. [File name = c:\ProgramData\Foresight Systems\SQL Compact Demo\LocalData.sdf]

Je suis perplexe quant à ce qui cause cette erreur. L'emplacement préféré pour ce type de fichier n'est-il pas c:\ProgramData? Que dois-je faire dans mon projet d'installation pour que cela fonctionne? Merci de votre aide.

Répondre

0

Quelques choses à vérifier peut-être (?):

  • le sdf a un attribut de fichier en lecture seule
  • est l'application en cours d'exécution en tant qu'administrateur ou l'accès étant accordées? UAC
+0

Aucun attribut en lecture seule. Mon application nécessite-t-elle des privilèges élevés pour écrire sur c: \ ProgramData? Il écrit les entrées Log4Net dans un sous-dossier sans problème. –

1

J'ai accepté la réponse de p.campbell, car il a identifié le problème de sécurité. Je suis retourné et a jeté un coup d'oeil à l'onglet de sécurité pour le dossier c:\ProgramData, et j'ai découvert que le groupe d'utilisateurs a seulement des autorisations de lecture pour ce dossier. Donc, ce n'est probablement pas le meilleur endroit pour mettre mon fichier SDF. Je vais poster une question distincte concernant où mettre le fichier.

+0

trouvaille intéressante. Sera intéressé à voir l'autre question. –

Questions connexes