OVH Cloud OVH Cloud

Lire un fichier avec des permissions

3 réponses
Avatar
Geoffrey
Bonjour,

sur un réseau, j'ai uns ervice qui doit aller lire un fichier sur un
serveur.
Si je lance le service avec le compte systeme, ca ne fonctionne pas, si je
le lance avec un compte utilisateur valide, ok.

Est-il possible que je lance le service en compte sysrtem et que je puisse,
en ayant login et password, accèder aux fichiers?

j'utilise
Directory.GetFiles et File.Copy


Merci

3 réponses

Avatar
Julien Bakmezdjian [MS]
Bonjour,

Cela est possible en impersonifiant le thread de votre service, juste avant
l'appel à GetFiles. Voir cet article de la MSDN :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemSecurityPrincipalWindowsIdentityClassImpersonateTopic.asp

Le code exemple est un peu long, mais débarassé de la gestion des erreurs ça
donne :
- Création d'un token pour l'utilisateur à logger (utilisation du nom de
l'utilisateur/mot de passe)
- Création d'une classe Identity avec ce token
- Impersonation
- Code à faire tourner sous l'identité de l'utilisateur
- Fin de l'impersonation

A noter qu'en .NET nous sommes obligés d'utiliser l'API Win32 LogonUser qui
n'a pas d'équivalent en .NET 1.1.

J'espère que cela peut vous être utile,

Julien

"Geoffrey" a écrit dans le message de news:

Bonjour,

sur un réseau, j'ai uns ervice qui doit aller lire un fichier sur un
serveur.
Si je lance le service avec le compte systeme, ca ne fonctionne pas, si je
le lance avec un compte utilisateur valide, ok.

Est-il possible que je lance le service en compte sysrtem et que je
puisse,
en ayant login et password, accèder aux fichiers?

j'utilise
Directory.GetFiles et File.Copy


Merci




Avatar
Geoffrey
Mon logiciel tourne sur W2000 ;(


"Julien Bakmezdjian [MS]" a écrit dans le
message de news:%
Bonjour,

Cela est possible en impersonifiant le thread de votre service, juste


avant
l'appel à GetFiles. Voir cet article de la MSDN :



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemSecurityPrincipalWindowsIdentityClassImpersonateTopic.asp

Le code exemple est un peu long, mais débarassé de la gestion des erreurs


ça
donne :
- Création d'un token pour l'utilisateur à logger (utilisation du nom


de
l'utilisateur/mot de passe)
- Création d'une classe Identity avec ce token
- Impersonation
- Code à faire tourner sous l'identité de l'utilisateur
- Fin de l'impersonation

A noter qu'en .NET nous sommes obligés d'utiliser l'API Win32 LogonUser


qui
n'a pas d'équivalent en .NET 1.1.

J'espère que cela peut vous être utile,

Julien

"Geoffrey" a écrit dans le message de news:

> Bonjour,
>
> sur un réseau, j'ai uns ervice qui doit aller lire un fichier sur un
> serveur.
> Si je lance le service avec le compte systeme, ca ne fonctionne pas, si


je
> le lance avec un compte utilisateur valide, ok.
>
> Est-il possible que je lance le service en compte sysrtem et que je
> puisse,
> en ayant login et password, accèder aux fichiers?
>
> j'utilise
> Directory.GetFiles et File.Copy
>
>
> Merci
>
>




Avatar
Paul Bacelar
Pourquoi ne pas faire tourner votre service directement avec le compte
réseau plutôt qu'avec le compte system local ?
--
Paul Bacelar

"Geoffrey" wrote in message
news:#
Mon logiciel tourne sur W2000 ;(


"Julien Bakmezdjian [MS]" a écrit dans le
message de news:%
> Bonjour,
>
> Cela est possible en impersonifiant le thread de votre service, juste
avant
> l'appel à GetFiles. Voir cet article de la MSDN :
>



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemSecurityPrincipalWindowsIdentityClassImpersonateTopic.asp
>
> Le code exemple est un peu long, mais débarassé de la gestion des


erreurs
ça
> donne :
> - Création d'un token pour l'utilisateur à logger (utilisation du


nom
de
> l'utilisateur/mot de passe)
> - Création d'une classe Identity avec ce token
> - Impersonation
> - Code à faire tourner sous l'identité de l'utilisateur
> - Fin de l'impersonation
>
> A noter qu'en .NET nous sommes obligés d'utiliser l'API Win32 LogonUser
qui
> n'a pas d'équivalent en .NET 1.1.
>
> J'espère que cela peut vous être utile,
>
> Julien
>
> "Geoffrey" a écrit dans le message de news:
>
> > Bonjour,
> >
> > sur un réseau, j'ai uns ervice qui doit aller lire un fichier sur un
> > serveur.
> > Si je lance le service avec le compte systeme, ca ne fonctionne pas,


si
je
> > le lance avec un compte utilisateur valide, ok.
> >
> > Est-il possible que je lance le service en compte sysrtem et que je
> > puisse,
> > en ayant login et password, accèder aux fichiers?
> >
> > j'utilise
> > Directory.GetFiles et File.Copy
> >
> >
> > Merci
> >
> >
>
>