Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD15] fRepertoireExiste ne fonctionne pas dans un service

13 réponses
Avatar
juanito33
Bonjour,

J'ai fait un service avec Windev15 dans lequel je scrute des
répertoires pour faire des traitements sur les fichiers présents. J'ai
un programme Windev 15 qui permet de paramétrer les informations
nécessaires à ce service.

Dans le programme je demande de sélectionner les répertoires concernés
et je vérifie s'ils existent lors de la mémorisation dans un fichier
ini. J'utilise donc fRepertoireExiste() dans mon programme. Avec un
chemin du style \\MonServeur\MonRepertoire, le programme de paramétrage
l'accepte.

Dans le service, je fais les mêmes vérifications dans le code
d'exécution du service. Cependant le fRepertoireExiste() me renvoie
alors faux.
Avec une lettre réseau qui pointe sur le répertoire partagé c'est
pareil.
Qu'est-ce qui pourrait faire que cette fonction ne réagisse pas de la
même manière dans le service que dans le programme ?
J'ai fait un test avec 2 machines sous XP pro sp3. J'ai essayé de
modifier les comptes utilisés par le service mais cela ne change rien.

J'ai essayé de ne pas tester l'existence du répertoire dans le service
mais le fListeFichier() qui suit ne fonctionne pas non plus. Il ne
trouve pas de fichiers dans le répertoire alors qu'il y en a.

Est-ce un bug de Windev 15 ou moi qui m'y prend mal ?

Merci d'avance

Jean

10 réponses

1 2
Avatar
Emmanuel Haefelé
"juanito33" a écrit :

Bonjour Jean,

Dans le service, je fais les mêmes vérifications dans le code
d'exécution du service. Cependant le fRepertoireExiste() me renvoie
alors faux.



Es-tu bien certain de la chaine que tu passes en paramètre à la fonction ?

Personnellement j'utilise cette fonction de la même manière que toi sous
forme de service WD15 et sincèrement je n'ai rien constaté d'anormal.
Peut-être que quelque chose m'a échappé mais j'en doute fort ...


Amicalement,

Emmanuel Haeefelé.
Avatar
juanito33
Emmanuel Haefelé avait écrit le 18/08/2010 :
"juanito33" a écrit :

Bonjour Jean,

Dans le service, je fais les mêmes vérifications dans le code d'exécution
du service. Cependant le fRepertoireExiste() me renvoie alors faux.



Es-tu bien certain de la chaine que tu passes en paramètre à la fonction ?

Personnellement j'utilise cette fonction de la même manière que toi sous
forme de service WD15 et sincèrement je n'ai rien constaté d'anormal.
Peut-être que quelque chose m'a échappé mais j'en doute fort ...


Amicalement,

Emmanuel Haeefelé.



Bonjour Emmanuel,

Oui, la chaîne est la bonne car je l'affiche ensuite dans un fichier de
trace et elle correspond bien à mon répertoire.

Lorsque tu l'utilises dans tes services WD15, tu pointes sur un
répertoire réseau ou local car en local cela fonctionne correctement.
C'est lorsque je veux utiliser un répertoire partagé ou une lettre
attachée à un répertoire partagé d'un autre poste que cela coince.

Ma version Windev est la 01F15061n.

Jean
Avatar
Emmanuel Haefelé
"juanito33" a écrit

Lorsque tu l'utilises dans tes services WD15, tu pointes sur un
répertoire réseau ou local car en local cela fonctionne correctement.



Je ne l'avais pas compris ainsi donc ça laisserait à penser que c'est un
problème de droit.

Je n'ai fait que très peu de test sur des répertoires réseaux mais dans ce
cas il ne faut absolument pas démarrer ton service en local system, il
faut que tu précises bien un utilisateur qui a des droits en adéquation
avec ce que tu veux faire sur ce répertoire.


Amicalement,

Emmanuel Haefelé.
Avatar
juanito33
Emmanuel Haefelé vient de nous annoncer :
"juanito33" a écrit :

Bonjour Jean,

Dans le service, je fais les mêmes vérifications dans le code d'exécution
du service. Cependant le fRepertoireExiste() me renvoie alors faux.



Es-tu bien certain de la chaine que tu passes en paramètre à la fonction ?

Personnellement j'utilise cette fonction de la même manière que toi sous
forme de service WD15 et sincèrement je n'ai rien constaté d'anormal.
Peut-être que quelque chose m'a échappé mais j'en doute fort ...


Amicalement,

Emmanuel Haeefelé.



Bonjour Emmanuel,

Ma précédente réponse ne semble pas arrivée.

Le répertoire passé est correct car je l'affiche ensuite dans un
fichier de trace pour vérifier.
Je viens de refaire un essai en Windev 11 et c'est pareil...
J'ai pourtant utilisé le compte Windows de ma session dans les
propriétés du service et ce compte me permets de voir le répertoire
partagé et de le lister au moyen de l'explorateur Windows.

Tu l'utilises en pointant sur un répertoire partagé d'un autre poste ou
avec un répertoire local ?

Jean
Avatar
Emmanuel Haefelé
"juanito33" a écrit

Ma précédente réponse ne semble pas arrivée.



Si elle est passée.

Finalement j'ai fait le test pour toi avec un répertoire réseau (chemin
UNC).

En réalisant un démarrage du service en local système, la fonction
frepertoireexiste me rend faux. En le démarrant avec un utilisateur qui a
les bons droits sur le répertoire, la fonction frepertoireexiste me rend
vrai.

J'ai pourtant utilisé le compte Windows de ma session dans les
propriétés du service et ce compte me permets de voir le répertoire
partagé et de le lister au moyen de l'explorateur Windows.



A mon avis il faut que tu cherches de ce côté mais malheureusement je ne
peux pas t'en dire plus.


Amicalement,

Emmanuel Haefelé.
Avatar
juanito33
Emmanuel Haefelé a émis l'idée suivante :
"juanito33" a écrit

Ma précédente réponse ne semble pas arrivée.



Si elle est passée.

Finalement j'ai fait le test pour toi avec un répertoire réseau (chemin
UNC).

En réalisant un démarrage du service en local système, la fonction
frepertoireexiste me rend faux. En le démarrant avec un utilisateur qui a
les bons droits sur le répertoire, la fonction frepertoireexiste me rend
vrai.

J'ai pourtant utilisé le compte Windows de ma session dans les
propriétés du service et ce compte me permets de voir le répertoire
partagé et de le lister au moyen de l'explorateur Windows.



A mon avis il faut que tu cherches de ce côté mais malheureusement je ne
peux pas t'en dire plus.


Amicalement,

Emmanuel Haefelé.



Merci pour ton test,

J'ai réussi tout à l'heure à faire fonctionner sur mon réseau en XP Pro
en utilisant le compte "administrateur" alors qu'avec mon compte local
qui est aussi administrateur cela n'avait pas fonctionné. Je ne suis
pas un pro de l'administration réseau et je n'ai pas trop compris
pourquoi.

Surle réseau de mon client je n'ai pas réussi à le faire fonctionner
mais je vais voir avec leur administrateur. Il y a un mélange de
plusieurs domaines et de WorkGroup. Cela provient sans doute de cela.

Merci pour ton aide.

Jean
Avatar
patrice
juanito33 a écrit :
Bonjour,

J'ai fait un service avec Windev15 dans lequel je scrute des répertoires
pour faire des traitements sur les fichiers présents. J'ai un programme
Windev 15 qui permet de paramétrer les informations nécessaires à ce
service.




comme évoqué dans une précédente réponse, quand on fait un service on
doit choisir :
- si on veut une interface écran (compte local system obligatoire)
- si on veut une interface réseau (compte utilisateur obligatoire)
(et bien sur, dans ce cas, un utilisateur qui a les droits sur le réseau)
Avatar
juanito33
patrice avait énoncé :
juanito33 a écrit :
Bonjour,

J'ai fait un service avec Windev15 dans lequel je scrute des répertoires
pour faire des traitements sur les fichiers présents. J'ai un programme
Windev 15 qui permet de paramétrer les informations nécessaires à ce
service.




comme évoqué dans une précédente réponse, quand on fait un service on doit
choisir :
- si on veut une interface écran (compte local system obligatoire)
- si on veut une interface réseau (compte utilisateur obligatoire)
(et bien sur, dans ce cas, un utilisateur qui a les droits sur le réseau)



Bonjour,

Pour l'instant, sur mon petit réseau Workgroup XP Pro j'arrive à le
faire fonctionner en mettant le compte "administrateur" avec son mot de
passe. Mon compte local ne permet pas au service d'accéder au
répertoire partagé.
Chez mon client, qui a un mélange de Windows serveur 2003 (où est le
répertoire partagé) et de server 2008 (où est mon service) je n'arrive
pas à le faire fonctionner à partir du compte "administrateur" du
serveur 2008. Pourtant ce compte "administrateur" permet bien de
visualiser le répertoire partagé dans l'explorateur Windows. Il
faudrait que je créé un autre compte sur le serveur 2008 pour accéder
au répertoire partagé ?
L'administrateur réseau a pourtant donné tous les droits sur le
répertoire partagé du serveur 2003.
Par contre, ces 2 serveurs sont dans 2 domaines différents, cela joue
peut-être aussi ?

Jean
Avatar
patrice
juanito33 a écrit :
patrice avait énoncé :
juanito33 a écrit :
Bonjour,

J'ai fait un service avec Windev15 dans lequel je scrute des
répertoires pour faire des traitements sur les fichiers présents.
J'ai un programme Windev 15 qui permet de paramétrer les informations
nécessaires à ce service.




comme évoqué dans une précédente réponse, quand on fait un service on
doit choisir :
- si on veut une interface écran (compte local system obligatoire)
- si on veut une interface réseau (compte utilisateur obligatoire)
(et bien sur, dans ce cas, un utilisateur qui a les droits sur le réseau)



Bonjour,

Pour l'instant, sur mon petit réseau Workgroup XP Pro j'arrive à le
faire fonctionner en mettant le compte "administrateur" avec son mot de
passe. Mon compte local ne permet pas au service d'accéder au répertoire
partagé.
Chez mon client, qui a un mélange de Windows serveur 2003 (où est le
répertoire partagé) et de server 2008 (où est mon service) je n'arrive
pas à le faire fonctionner à partir du compte "administrateur" du
serveur 2008. Pourtant ce compte "administrateur" permet bien de
visualiser le répertoire partagé dans l'explorateur Windows. Il faudrait
que je créé un autre compte sur le serveur 2008 pour accéder au
répertoire partagé ?
L'administrateur réseau a pourtant donné tous les droits sur le
répertoire partagé du serveur 2003.
Par contre, ces 2 serveurs sont dans 2 domaines différents, cela joue
peut-être aussi ?

Jean




c'est sur que deux domaines ca va pas arranger la sauce ...
est ce que le compte administrateur à le meme mot de passe sur les deux
machines (service et dossier partagé) ?
essayez peut etre de créer le meme user des 2 cotés ...
Avatar
juanito33
patrice a couché sur son écran :
juanito33 a écrit :
patrice avait énoncé :
juanito33 a écrit :
Bonjour,

J'ai fait un service avec Windev15 dans lequel je scrute des répertoires
pour faire des traitements sur les fichiers présents. J'ai un programme
Windev 15 qui permet de paramétrer les informations nécessaires à ce
service.




comme évoqué dans une précédente réponse, quand on fait un service on doit
choisir :
- si on veut une interface écran (compte local system obligatoire)
- si on veut une interface réseau (compte utilisateur obligatoire)
(et bien sur, dans ce cas, un utilisateur qui a les droits sur le réseau)



Bonjour,

Pour l'instant, sur mon petit réseau Workgroup XP Pro j'arrive à le faire
fonctionner en mettant le compte "administrateur" avec son mot de passe.
Mon compte local ne permet pas au service d'accéder au répertoire partagé.
Chez mon client, qui a un mélange de Windows serveur 2003 (où est le
répertoire partagé) et de server 2008 (où est mon service) je n'arrive pas
à le faire fonctionner à partir du compte "administrateur" du serveur 2008.
Pourtant ce compte "administrateur" permet bien de visualiser le répertoire
partagé dans l'explorateur Windows. Il faudrait que je créé un autre compte
sur le serveur 2008 pour accéder au répertoire partagé ?
L'administrateur réseau a pourtant donné tous les droits sur le répertoire
partagé du serveur 2003.
Par contre, ces 2 serveurs sont dans 2 domaines différents, cela joue
peut-être aussi ?

Jean




c'est sur que deux domaines ca va pas arranger la sauce ...
est ce que le compte administrateur à le meme mot de passe sur les deux
machines (service et dossier partagé) ?
essayez peut etre de créer le meme user des 2 cotés ...



Bonjour,

Les 2 comptes administrateurs n'ont pas le même mot de passe sur les 2
serveurs. L'administrateur du réseau n'est pas chaud pour le faire pour
des raisons de sécurité...

La question est donc maintenant : peut-on avoir un compte dans les
propriétés du service qui permet de le lancer et, par programmation
avoir un autre compte qui permettrait de visualiser et accéder au
répertoire partagé de l'autre serveur ?
Je ne vois pas de fonction pour changer de compte utilisateur avant de
faire le fRepertoireExiste()

Jean
1 2