2009-09-22 8 views
0

j'ai mon application C# dans c: \ program files \ app \ dossier j'utilise la base de données SqlLitene pouvait pas la base de données ouverte

mon code fonctionne parfaitement lors de la connexion via les fenêtres d'administrateur, si je change la fenêtre compte utilisateur à peu, je ne pouvais pas ouvrir ma base de données

public void OpenDB() 
{ 
SQConnectionString = "Data Source=" + DBPath +";Pooling=true;FailIfMissing=false"; 
con = new SQLiteConnection(); 
con.ConnectionString = SQConnectionString; 
con.Open(); 
} 
+0

Qu'est-ce que le message d'erreur? –

+0

Vérifiez les autorisations sur le fichier de base de données? – Lazarus

Répondre

2

Le répertoire du programme fichiers est certainement pas le bon endroit pour mettre les données ... Sous Windows Vista et Seven, ce répertoire ne peut pas être écrit à moins que l'application s'exécute en tant qu'administrateur. Vous devez mettre la base de données dans ProgramData ou dans le répertoire de données de l'utilisateur. Vous pouvez obtenir ces répertoires avec la méthode Environment.GetFolderPath:

string userAppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
// On Vista and Seven, this is C:\Users\<username>\AppData\Roaming 
// On XP, this is C:\Documents and Settings\<username>\Application Data 

string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 
// On Vista and Seven, this is C:\ProgramData 
// On XP, this is C:\Documents and Settings\All Users\Application Data 
+0

merci pour votre réponse rapide –

0

Est-ce que l'utilisateur non-admin ont write privilèges sur le répertoire où vous avez installé SQLite? Parce que cela peut arriver si vous utilisez le fichier journal.

0

C'est parce que les utilisateurs non-administrateurs n'ont pas accès en écriture au dossier program files

Questions connexes