Je crée une nouvelle version d'une application de bureau Windows existante qui fonctionne correctement depuis plusieurs années. L'application utilise une base de données SqlServerCe, qui est installée dans le répertoire DataDirectory de la machine. La nouvelle version de l'application est en cours de création pour être compatible avec les machines 64 bits. J'ai migré le code vers une machine virtuelle Parallels exécutant Windows 10 sur mon Macbook, et je construis la nouvelle version à l'aide de Visual Studio 2017. La construction fonctionne bien (j'utilise un projet d'assistant d'installation pour créer les fichiers d'installation). Mais, quand j'installe l'application, j'obtiens une erreur lors de la première tentative d'accès à la base de données. L'erreur est: L'accès au fichier de base de données n'est pas autorisé. [1884, Nom de fichier = C: \ ProgramData \ CompanyName \ ApplicationName \ AppDataBase.sdf, SeCreateFile].Obtention de l'erreur "Accès au fichier de base de données non autorisé" lors de la création d'une version pour les machines Windows 64 bits
Le fichier .sdf n'est pas marqué comme étant en lecture seule. Si je vais au fichier .sdf, une fois qu'il est installé, et donne à lire, écrire et modifier les autorisations à tout le monde (en utilisant l'explorateur de fichiers), alors l'application peut accéder au fichier et il n'y a pas d'erreur. Cependant, si j'essaie de le faire depuis mon code en utilisant File.SetAccessControl, j'obtiens à nouveau l'erreur d'accès. Je ne vois aucun moyen de définir des autorisations sur le fichier .sdf pendant le processus d'installation, en utilisant la fonctionnalité Assistant de configuration (vue du système de fichiers).
Voici la chaîne de connexion J'utilise:
<connectionStrings>
<add name="ApplicationName.Properties.Settings.ApplicationNameConnectionString"
connectionString="Data Source=|DataDirectory|AppDataBase.sdf"
providerName="Microsoft.SqlServerCe.Client.4.0" />
</connectionStrings>
Cela a bien fonctionné lors de la construction en utilisant Visual Studio 2010 et le déploiement sur les machines x86. Merci d'avance pour tout conseil que vous pouvez donner.
Merci beaucoup! C'est ce que je cherchais! J'ai supprimé tout ce qui dans mon code manipulait l'emplacement ProgramData et j'ai supprimé le projet de déploiement hérité comme un moyen de publier l'application. Ensuite, j'ai utilisé la fonctionnalité Publier du projet (après avoir vérifié tous les paramètres), et cela a fonctionné! Merci beaucoup. Je n'avais rien vu qui m'ait fait connaître le changement de l'emplacement du dossier, alors je me serais battu avec ça pendant longtemps. – rogdawg