Comportement étrange de "PathFileExists", dans un cadre particulier

Comportement étrange de "PathFileExists", dans un cadre particulier - C++ - Programmation

Marsh Posté le 20-06-2003 à 16:40:03    

Je dirait même TRES étrange.
Tout ceci se passe dans le cadre d'un module ISAPI (en gros, une API permettant de "programmer" IIS en C/C++, en l'occurence utilisé puor faire le même genre de trucs qu'avec des CGI).
Bref, dans ce cadre-ci, la fonction PathFileExists me rend FALSE, alors qu'un chemin que je lui passe en paramètre existe.
Il s'agit d'un chemin distant, je l'ai monté sur un lecteur réseau, ça n'devrait donc pas poser de problèmes.
Qqn aurait une petite idée pour m'aider ? :cry:

Reply

Marsh Posté le 20-06-2003 à 16:40:03   

Reply

Marsh Posté le 20-06-2003 à 16:42:21    

lu dans la doc :  
 

Citation :


Call GetLastError for extended error information.


 
des fois, je me demande comment les éditeurs font encore des docs... :sarcastic:


Message édité par Tetragrammaton IHVH le 20-06-2003 à 16:54:48

---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 20-06-2003 à 16:57:25    

Tetragrammaton IHVH a écrit :

lu dans la doc :  
 

Citation :


Call GetLastError for extended error information.


 
des fois, je me demande comment les éditeurs font encore des docs... :sarcastic:


 
Heu, en principe c'est indiqué dans la MSDN quand on peut appliquer GetLastError suite à une fonction de L'API.
Dans ma doc en local, ce n'est pas marqué pour PathFileExists
Pour preuve :
 


PathFileExists
 
 
BOOL PathFileExists(
    LPCTSTR lpszPath
    );
 
Determines if a file exists.  
 
Returns TRUE if the file exists, or FALSE otherwise.  
lpszPath  
Address of the file to verify.  
This function will test for the validity of the file and path.  
 
Example:  
 
#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"
 
void main( void )
{
 // Valid file path name (file is there).
 char buffer_1[] = "C:\\TEST\\file.txt";  
 char *lpStr1;
 lpStr1 = buffer_1;
 
 // Invalid file path name (file is not there).
 char buffer_2[] = "C:\\TEST\\file.doc";  
 char *lpStr2;
 lpStr2 = buffer_2;
 
 
 // Return value from "PathFileExists".  
 int retval;  
 
 // Search for the presence of a file with a true result.
 retval = PathFileExists(lpStr1);
 if(retval == 1)
 {
 cout << "Search for the file path of : " << lpStr1 << endl;
 cout << "The file requested \"" << lpStr1 << "\" is a valid file" << endl;
 cout << "The return from function is : " << retval << endl;
 }
 
 else{
  cout << "\nThe file requested " << lpStr1 << " is not a valid file" << endl;
  cout << "The return from function is : " << retval << endl;
  }
 
 // Search for the presence of a file with a false result.
 retval = PathFileExists(lpStr2);
 if(retval == 1)
 {
 cout << "\nThe file requested " << lpStr2 << "is a valid file" << endl;
 cout << "Search for the file path of : " << lpStr2 << endl;
 cout << "The return from function is : " << retval << endl;
 }
 
 else{
  cout << "\nThe file requested \"" << lpStr2 << "\" is not a valid file" << endl;
  cout << "The return from function is : " << retval << endl;
  }
}  
OUTPUT
==============
Search for the file path of : C:\TEST\file.txt
The file requested "C:\TEST\file.txt" is a valid file
The return from function is : 1
 
The file requested "C:\TEST\file.doc" is not a valid file
The return from function is : 0

 
 
Et commence pas à être méprisant comme ça, c'est casse couille.

Reply

Marsh Posté le 20-06-2003 à 16:59:55    

IIS est lancé sous le compte SYSTEM et ce dernier ne peux pas accéder au réseau local, voilà la source de ton pb ;)
 
Ouvre le service sous un compte admin par ex, ça devrait fonctionner :)

Reply

Marsh Posté le 20-06-2003 à 17:03:59    

GetLastError me rend "ERROR_PATH_NOT_FOUND", génial !  :(

Reply

Marsh Posté le 20-06-2003 à 17:05:51    

*Syl* a écrit :

IIS est lancé sous le compte SYSTEM et ce dernier ne peux pas accéder au réseau local, voilà la source de ton pb ;)
 
Ouvre le service sous un compte admin par ex, ça devrait fonctionner :)


 
J'ai bien pensé à un truc de ce genre, mais je n'connais pas des masses IIS. C'est sur côté des sécurités de répertoire, "autoriser les connexions anonymes" et compagnie, c'est ça ? et où plus précisément ?

Reply

Marsh Posté le 20-06-2003 à 17:08:16    

Nan, ça n'a rien à voir, là je te parle que des propriétés du service, dans l'onglet connexion tu spécifies un compte @dmin au lieu du compte système.

Reply

Marsh Posté le 20-06-2003 à 17:11:54    

*Syl* a écrit :

Nan, ça n'a rien à voir, là je te parle que des propriétés du service, dans l'onglet connexion tu spécifies un compte @dmin au lieu du compte système.


 
Heu... dans la console IIS (v5.1), je n'vois pas d'onglet connexion.
 
EDIT : je pars en week end, j'éspère trouver une agréable surpise Lundi en revenant (j'ai déja la cause de mon pb, il me reste à comprendre la solution), et merci *Syl*  :hello:


Message édité par El_gringo le 20-06-2003 à 17:13:08
Reply

Marsh Posté le 20-06-2003 à 17:14:10    

Ha, ok, j'viens de comprendre : pour le service de publication www, ok, j'essaye ça, merci...

Reply

Marsh Posté le 20-06-2003 à 17:17:05    

Mais c'est quoi au juste un compte pour un service ? Parce que, si lui me mon identifiant de connexion et mon mot de passe (je suis admin sur mon PC), il refuse que je valide. J'suis un peu largué de ce côté là. :-(

Reply

Marsh Posté le 20-06-2003 à 17:17:05   

Reply

Marsh Posté le 20-06-2003 à 17:26:38    

Là je comprends pas pkoi il veut pas prendre ton compte, t'as sûrement dû te tromper, passe par parcourir..
Un compte pour un service c'est un compte comme un autre donc comme le tien.. :)

Reply

Marsh Posté le 23-06-2003 à 09:37:36    

*Syl* a écrit :

Là je comprends pas pkoi il veut pas prendre ton compte, t'as sûrement dû te tromper, passe par parcourir..
Un compte pour un service c'est un compte comme un autre donc comme le tien.. :)


 
Ouais, donc, en effet, j'me trompais tout connement dans le nom d'utilisateur de mon compte.
Maintenant, j'ai pu changer le comptre système utilisé par mon "service de publication WWW" par un compte admin (existant sur mon PC et sur le PC auquel on cherche à accèder). Pour changer ce compte, j'ai du mettre ce même compte pour tous les services dépendant du "service de publication WWW" (onglet "dépendances" dans les propriétés du service).
Mais après avoir fait ça, redémaré le service, je n'accède pas mieux à mon répertoire ! :-(

Reply

Marsh Posté le 23-06-2003 à 13:12:25    

c vrai que normalement un compte SYSTEM a absolument tout les droits sur la machine locale (plus encore qu'un compte admin) mais n'a aucun droit sur le reseau.


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 23-06-2003 à 13:16:17    

Si j'ai l'courage et si j'y pense je testerais ce soir chez moi mais normalement l'axx au réseau est ok en tant qu'admin..

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed