Bonjour,
J'utilise IIS pour héberger un webservice.
Ma dll doit appeler un executable via un createProcess. Ma .dll et mon .exe sont dans le même dossier "C:\Inetpub\wwwroot\ErenetGateway\bin".
Mon soucis est que, le répertoire courant est celui de IIS, à savoir "C:\WINDOWS\system32\inetsrv". Afin de retrouver le chemin de mon executable, j'ai donc écrit ceci :
CString ls_module_name ;
CString ls_commande_line ;
// Récupération du chemin du module
DWORD taille = 1024 ;
char lsz_chemin[1024] ;
GetModuleFileName( AfxGetInstanceHandle(), lsz_chemin, taille ) ;
CString ls_chemin( lsz_chemin ) ;
ls_chemin = ls_chemin.Mid( 0, ls_chemin.ReverseFind('\\') );
// nom de l'exécutable
ls_module_name = "ErenetClientGetEtat.exe" ;
// command line
ls_commande_line.Format( "%s\\%s %s %u %d URL=%s", ls_chemin, ls_module_name, ls_session_id, this->ihwnd_requestor, this->il_msg_requestor, this->is_url ) ;
// exécution
if ( !CreateProcess(
NULL, // Module name.
( char * ) LPCTSTR( ls_commande_line ) , // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&astr_process.si, // Pointer to STARTUPINFO structure.
&astr_process.pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
// erreur
lb_ok = false ;
as_lib_erreur.Format( "Impossible de lancer le processus de surveillance : erreur %d", GetLastError() ) ;
}
Mais celà ne fonctionne pas non plus puisque la encore, j'obtient le chemin de l'executable de IIS.
Y a-t-il un moyen de retrouver l'adresse de ma dll ?
Merci pour votre aide
Partager