2009-11-11 2 views
1

Dans mon application C#, si je voulais pouvoir télécharger un "complément" de notre site Web et le stocker localement sur l'ordinateur de l'utilisateur, puis l'exécuter (supposer qu'il s'agit d'une DLL d'assemblage ou EXE, peu importe), Je suppose que je ne peux pas le stocker dans un sous-répertoire de mon dossier Program Files, et ce n'est pas vraiment le bon endroit pour cela puisque les compléments sont spécifiques à l'utilisateur. Où dois-je les stocker, et quels types de problèmes de confiance/sécurité pourrais-je rencontrer?Où puis-je stocker le code exécutable téléchargé à partir d'un site et l'exécuter?

+0

Assurez-vous tout code que vous téléchargez est signé numériquement par vous avant de l'exécuter, sinon vous exposez vos utilisateurs à de nombreux risques, y compris, par exemple, une personne de piratage sur votre site ou d'attaquer vos utilisateurs Serveur DNS pour que votre logiciel télécharge les fichiers du mauvais site (il y a beaucoup plus de risques). – Nir

+0

@Nir: Assez facile si j'écris mes propres compléments, mais si je veux autoriser des compléments de tiers, je dois également signer toutes leurs clés? –

Répondre

1

Utilisez la classe IsolatedStorage fournie dans .NET pour stocker des données spécifiques à l'utilisateur.

Plus d'informations: Working with Isolated Storage in .NET

+0

Quelqu'un veut fournir une raison pour laquelle cette méthode est meilleure ou pire que celle de Brian? –

+0

Scott, ce n'est pas très différent. Je pense que l'emplacement de stockage est légèrement différent de celui qui serait utilisé dans la réponse de Brian. Généralement, c'est recommandé selon les livres .NET que j'ai lus pour les données spécifiques aux utilisateurs/applications. En fonction du système déployé, vous bénéficiez d'une bien meilleure modification des autorisations permettant d'utiliser IsolatedStorage à l'aide de CAS si vous rencontrez des problèmes qui pourraient vous empêcher d'utiliser l'approche de Brian. – Ian

+0

D'après ceci: http://stackoverflow.com/questions/882490/how-to-decide-where-to-store-per-user-state-registry-appdata-isolated-storage/882496#882496 isoléstorage est à l'intérieur du Dossier ApplicationData de toute façon, donc je pense que c'est la meilleure réponse. –

3

Le répertoire de données d'application de l'utilisateur actuel doit être un emplacement pour les stocker.

string basePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
basePath = System.IO.Path.Combine(basePath, "MyProgram"); 
if (!Directory.Exists(basePath)) 
    Directory.CreateDirectory(basePath); 

Essayer d'écrire quoi que ce soit à l'intérieur des fichiers du programme après l'installation se déroulera dans des problèmes dans Vista, Windows Server 2008, Windows 7 et versions ultérieures. À moins bien sûr que votre application nécessite une élévation. Vous avez également mentionné que vos fichiers sont spécifiques à chaque utilisateur.

Questions connexes