Comment puis-je transmettre des informations d'identification pour une machine si je peux utiliser le Microsoft.Win32.RegistryKey.OpenRemoteBaseKey() sur celui-ci?
C' .NET API fonctionne bien si je suis en train d'ouvrir le Registre dans une machine qui est dans le même domaine que je suis (et mon utilisateur connecté dispose des droits d'administrateur sur la machine cible).
Ce qui est difficile si c'est un domaine de la machine avec un autre, locaux administratifs de l'utilisateur (dont j'ai le mot de passe).
J'ai essayé d'utiliser WNetUseConnection() (qui m'a bien servi dans le passé dans des situations où ce que je voulais, c'était de lire un fichier disque distant) avant d'appeler OpenRemoteBaseKey(), mais pas de dés -- j'ai un accès refusé d'exception.
Clairement, je doit passer des informations d'identification d'une autre façon, mais comment?
OriginalL'auteur JCCyC | 2010-03-29
Vous devez vous connecter pour publier un commentaire.
Ce que j'ai utilisé avec succès pour accéder à des fichiers sur un ordinateur est le code suivant:
Et puis pour la signature dans la partie, il suffit d'utiliser:
Comme vous pouvez le voir, "Undo()" va faire que vous n'êtes plus connecté en tant qu'utilisateur. Donc ne l'utilisez pas avant que vous avez terminé. Mais n'oubliez pas de l'utiliser!
Pourrais-je garder le "jeton" variable autour d'un long moment, puis utiliser la fonction "aide/Annuler()" bloc à différents points dans l'apprivoiser à l'aide de la même façon?"
Je Pense que oui. C'est le Usurper l'identité qui en fait des signes. Ce que j'ai utilisé est un "GetImpersonation()" qui retourne un WindowsImpersonationContext comme ci-dessus
Mais ne pas en personne.Annuler() rend la personne variable inutilisable pour un accès futur? Mon plan était d'appel LogonUser(), garder le "jeton" pointeur, et ensuite utiliser différents à l'aide de blocs exactement comme la vôtre, chaque avec la création d'un nouveau WindowsImpersonationContext objet.
Ou peut-être que je ne peut PAS l'appeler Annuler() à chaque fois, juste à l'aide de(personne) { quelque chose(); }, puis à l'aide de(personne) { something_else(); }, et puis quand je suis sûr de ne pas avoir besoin de la connexion de plus, personne.Annuler()?
OriginalL'auteur Oskar Kjellin