J'ai une application winform C# qui s'exécute sous un compte local mais qui a besoin de surveiller les dossiers d'un domaine. J'utilise un code légèrement modifié de here pour copier les fichiers et cela fonctionne très bien. Est-ce qu'un code similaire peut être utilisé avec l'usurpation d'identité de FileSystemWatcher pour que je puisse surveiller un dossier sur un domaine?FileSystemWatcher s'exécutant sous un utilisateur avec emprunt d'identité
Répondre
Oui, il y a une bonne classe d'emprunt d'identité here, inclure cette classe dans votre projet et que de simplement placer votre FileSystemWatcher dans un bloc en utilisant comme ceci:
using (new Impersonator("myUsername", "myDomainname", "myPassword"))
{
...
<code that executes under the new context>
...
}
J'ai enveloppé l'initialisation de mon FileSystemWatcher dans un bloc utilisant pour l'imitateur comme vous l'avez suggéré et cela a fonctionné comme un champion. Merci. – AdmSteck
np, codage heureux ... –
Cela fonctionne, car les handles de fichiers sont ouverts dans le contexte utilisateur emprunté. Même après que l'usurpation d'identité est revenue, l'observateur continuera à regarder. Vous devrez emprunter à nouveau l'identité pour regarder des fichiers différents. – Sophit
Vous pouvez:
Appliquer des autorisations à les dossiers de domaine qui permettent aux utilisateurs n'appartenant pas au domaine d'accéder (c.-à-d. tout le monde.)
Ouvrez une session avec un compte de domaine disposant des autorisations et exécutez l'application winform.
Refactorisez le code FileSystemWatcher dans un service Windows et exécutez-le sous un compte Domian avec des autorisations suffisantes.
Emprunter l'identité d'un compte de domaine dans le code existant, il existe plusieurs bonnes solutions sur le projet de code.
La réponse est: Oui. –
Comment cela devrait-il être fait? Est-ce que je crée simplement l'objet FileSystemWatcher en empruntant l'identité du compte de domaine? – AdmSteck