Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

#1 26-08-2013 08:55:34

Amélie  
Membre Geek
Date d'inscription: 24-11-2009
Messages: 24
Pépites: 135
Banque: 0

[RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Bonjour,

J'ai une appli qui permet d'écrire dans un fichier texte la liste des sous répertoire d'un répertoire.
Ce répertoire peut un répertoire sur le disque dur (C:\rep) ou sur un lecteur réseau (X:\rep où X:\ est en fait \\Ordi_2\Partage)

Lorsque je lance mon exe en double-cliquant dessus alors pas de soucis : les sous répertoires sont récupérés que mon répertoire soit un disque dur ou un lecteur réseau

Par contre si je lance mon exe via un service Windows (donc avec l'utilisateur Système) alors :
- j'arrive bien a récupérer la liste si le répertoire à scanner est sur le C
- Si le répertoire à scanner est sur un lecteur réseau alors je ne récupères rien.

Le lecteur réseau est accessible à tout le monde en lecture et écriture.
J'ai fais le test avec
- Dirlist d'une listbox : cela me retourne false
- FindFirstFileA : le handle retourné vaut -1

Avez-vous une piste pour que je puisse récupérer cette liste lorsque l'utilisateur qui lance l'exe est "Système" ?

Merci d'avance

Dernière modification par Amélie (23-10-2015 09:40:44)

Hors ligne

 

#2 26-08-2013 09:47:33

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Bonjour,

question bête : l'utilisateur Système a-t-il accès à ces mappings réseau ?


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#3 26-08-2013 10:18:11

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Bonjour,

Bonne question de Rincevent.
J'allais demander ça ne fonctionne pas en utilisant X:\rep et/ou  \\Ordi_2\Partage\rep ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#4 26-08-2013 12:04:05

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Bonjour,

Il me semble qu'un lecteur réseau n'est pas accessible par un service Windows et qu'il faut utiliser le nom de partage direct comme "\\Ordi_2\Partage\rep "

Hors ligne

 

#5 26-08-2013 12:06:54

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Bonjour,

Par expérience, un service  n'a pas accès aux lecteurs réseaux, par contre les chemins UNC fonctionnent ( \\hostname\sharedDir )


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#6 26-08-2013 15:13:47

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

xlat a écrit:

Bonjour,

Par expérience, un service  n'a pas accès aux lecteurs réseaux, par contre les chemins UNC fonctionnent ( \\hostname\sharedDir )

Je t'ai devancé de deux minutes ;)

Hors ligne

 

#7 27-08-2013 06:17:03

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Ben53 a écrit:

xlat a écrit:

Bonjour,

Par expérience, un service  n'a pas accès aux lecteurs réseaux, par contre les chemins UNC fonctionnent ( \\hostname\sharedDir )

Je t'ai devancé de deux minutes ;)



Sinon en utilisant l'API windows il est possible de traduire un chemin X:\somewhere vers \\host\sharedDir\somewhere, mais en dehors du service windows (en général dans l'interface de configuration du service) :

Code: pb

function ulong WNetGetConnectionW(string lpLocalName, ref string lpRemoteName, ref ulong lpnLength) library "mpr.dll" alias for "WNetGetConnectionW"


function string expandnetworkdrive (readonly string as_path);
string ls_remote, ls_drive
ulong lul_length, lul_ret
ls_drive = left(as_path,2)
if match(ls_drive, '^.:$') then
  ls_remote = Fill( " " , 4096 )
  lul_length = len(ls_remote)
  lul_ret = wnetgetconnection( ls_drive, ref ls_remote, ref lul_length)
  if lul_ret = 0 then
    ls_remote += mid( as_path, 3 )
  else
    ls_remote = as_path
  end if
else
  ls_remote = as_path
end if

return ls_remote
end function

https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#8 27-08-2013 14:01:26

Amélie  
Membre Geek
Date d'inscription: 24-11-2009
Messages: 24
Pépites: 135
Banque: 0

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Merci à tous pour vos réponses.

En effet si au lieu de mettre X:\somewhere, je met \\host\sharedDir\somewhere alors cela fonctionne.
Le soucis c'est que je n'ai que le X:\somewhere et que je n'arrive pas à le transformer en \\host\sharedDir\somewhere.

J'ai mis le code de xlat au tout début dans mon exe et :
- si je lance l'exe via le service Windows alors il me retourne l'erreur 2250 (ERROR_NOT_CONNECTED : This network connection does not exist)
- si je lance l'exe en double-cliquant dessus alors il me retourne bien \\host\sharedDir\somewhere

Avez-vous d'autres idées ?

Merci

Hors ligne

 

#9 27-08-2013 14:59:19

FMolinas  
Membre Geek
Lieu: Lyon
Date d'inscription: 12-06-2007
Messages: 87
Pépites: 97
Banque: 6,435,474,948,567

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

À mon avis, le problème vient à la base du fait que le montage d'un lecteur réseau (X: dans ton cas) est lié à l'utilisateur qui fait le montage.
L'utilisateur "System" ne connaît sans doute pas ton X:... (D'ailleurs, il vaut mieux ne pas utiliser "System" mais plutôt "LocalService" ou "NetworkService" qui sont là pour ça et ont des droits plus adaptés.)

Essaie de paramétrer ton service pour qu'il s'exécute avec ton nom de compte utilisateur. À défaut d'être la solution ça permettra peut-être d'y voir plus clair.

Hors ligne

 

#10 28-08-2013 06:29:02

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Amélie a écrit:

Merci à tous pour vos réponses.

J'ai mis le code de xlat au tout début dans mon exe et :
- si je lance l'exe via le service Windows alors il me retourne l'erreur 2250 (ERROR_NOT_CONNECTED : This network connection does not exist)
- si je lance l'exe en double-cliquant dessus alors il me retourne bien \\host\sharedDir\somewhere

Bah oui, c'est pour çà que je précise

xlat a écrit:

... mais en dehors du service windows (en général dans l'interface de configuration du service)

avant mon code


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#11 28-08-2013 09:13:35

Amélie  
Membre Geek
Date d'inscription: 24-11-2009
Messages: 24
Pépites: 135
Banque: 0

Re: [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

FMolinas a écrit:

Essaie de paramétrer ton service pour qu'il s'exécute avec ton nom de compte utilisateur. À défaut d'être la solution ça permettra peut-être d'y voir plus clair.

J'ai essayé de modifier le compte utilisé par mon service Windows en mettant mon compte utilisateur.
Il se lance bien avec mon compte car dans le gestionnaire des tâches, je vois bien l'exe PB qu'il lance parmi mes processus mais j'ai toujours le même soucis

xlat a écrit:

... mais en dehors du service windows (en général dans l'interface de configuration du service)

Du coup je ne vois pas où je vais pouvoir faire ce code.
Car j'installe mon service et mon exe via un setup qui me note dans un .ini les chemins d'installation (mais pas en UNC)
Mon service est appelé par requête WebHttp. Il fait quelque vérif et lance mon exe. Et mon exe récupère les infos dont il a besoin dans le ficher ini.

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Problème pour récupérer les sous répertoires d'un répertoire

Pied de page des forums

Propulsé par FluxBB 1.2.22