2011-01-06 5 views
1

J'écris un programme de sauvegarde pour un usage personnel (pour le moment au moins).Enregistrement du nom d'utilisateur et du mot de passe Windows dans VB.Net

Pour certains répertoires (répertoires réseau/répertoires protégés), des informations d'identification sont requises pour y accéder.

Je peux configurer différentes tâches du programme pour qu'elles s'exécutent à des heures spécifiques.

Ces travaux sont stockés dans un fichier XML.

Je souhaite également stocker les noms d'utilisateur et les mots de passe dont les travaux auront besoin.

Quoi et où serait le meilleur moyen de les conserver?

La modification des autorisations sur les répertoires n'est pas une option.

Merci d'avance!

Répondre

2

Vous ne devez jamais stocker le mot de passe de connexion pour un utilisateur dans Windows afin de pouvoir accéder à un répertoire local. Au lieu de cela, votre programme de sauvegarde doit s'exécuter en tant qu'utilisateur ayant activé SeBackupPrivilege (c'est-à-dire exécuter la sauvegarde à partir d'un service qui s'exécute en tant que système local). Cela signifie que vous n'aurez pas besoin de modifier les autorisations.

Vous devrez peut-être également vous assurer que vous effectuez d'abord une copie fantôme en volume à partir de laquelle vous copiez - ne copiez pas directement à partir du disque car cela peut entraîner une incohérence de la sauvegarde.

De même, vous devez faire particulièrement attention aux fichiers cryptés et utiliser ReadEncryptedFileRaw pour cela.

+0

Le compte système local peut-il également copier à partir des répertoires réseau? Si non. Comment gérer les répertoires réseau (avec mot de passe)? – PeeHaa

+1

Non, il est peu probable que le système local puisse copier à partir de répertoires distants. Cependant, le scénario distant est une histoire totalement différente - est-ce un ordinateur séparé qui a d'autres utilisateurs principaux, est-ce un serveur, est-ce un lecteur réseau, est-ce à la maison ou dans un bureau (avec un domaine)? Ce sont tous des cas différents. – villintehaspam

+0

Il y a 1 serveur Linux. Et 1 serveur de fichiers dans le domaine. Et 2 machines utilisateur également dans le domaine. Je cours maintenant un cronjob sur la machine de Linux chaque nuit sur la machine de Linux et une tâche programmée tous les soirs sur le serveur de fichiers. Pour copier le fichier dans un dossier de sauvegarde sur l'ordinateur spécifique qui exécute l'application de sauvegarde. Je fais la même chose pour les machines de l'utilisateur seulement à l'ouverture de session. Merci pour ton aide! – PeeHaa

1

Vous pouvez exécuter le programme de sauvegarde en tant que tâche planifiée, en tant qu'utilisateur spécifique. En ce qui concerne le stockage des mots de passe, vous pouvez les stocker en utilisant IsolatedStorage et en utilisant un cryptage bidirectionnel pour rendre plus difficile le déchiffrement du fichier par un tiers s'il parvient à le trouver.

Vérifiez ce SO question pour implémenter le cryptage bidirectionnel.

+0

L'exécution du programme en tant qu'utilisateur spécifique n'est pas une option. Cause différents répertoires nécessiteront des informations d'identification différentes. Je pense que le cryptage bidirectionnel est toujours utilisé avec une clé? Que faire si je veux publier l'application à l'avenir? Dans ce cas, je ne veux pas que la clé soit la même (pensez à l'ingénierie inverse). Comment aborder cela? Questions questions. : P S'il vous plaît dites-moi si je suis loin. :) Merci! – PeeHaa

+1

Vous pouvez générer la clé dans votre code en fonction de plusieurs facteurs tels que le nom de la machine, le nom de domaine, le nom d'utilisateur de la personne qui installe le logiciel, etc. Voir également cette question SO http://stackoverflow.com/questions/99880/generating-a- unique-machine-id –

Questions connexes