2017-05-30 6 views
-4

Je tente d'enregistrer un .dll à partir d'un code (application Windows7-64 bit). L'extrait de code est ci-dessous:Enregistrement d'un fichier .dll Utilisation de regsvr32

fonctionne très bien:

ShellExecute(NULL, 
      _T("Open"), 
      _T("regsvr32"), 
      _T(C:\\NewFolder\\Test.dll"), 
      NULL, 
      SW_SHOWNORMAL); 

ne réussit pas:

ShellExecute(NULL, 
      _T("Open"), 
      _T("regsvr32"), 
      _T(C:\\New Folder\\Test.dll"), 
      NULL, 
      SW_SHOWNORMAL); 

Pourquoi cela? Est-ce que Regsvr32 ne fonctionne pas avec de l'espace dans le chemin?

+0

Et, quel est le code d'erreur, qui est retourné? –

+0

Le code de retour est 0x0000002a –

+0

@SandeepKumar Selon la [documentation] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx?f=255&MSPPError = -2147217396): _Si la fonction réussit, elle renvoie une valeur supérieure à 32_. 0x2A = 42, qui est supérieur à 32, d'où - il a réussi. Avez-vous même passé la lecture de la documentation? –

Répondre

0

Si vous avez des espaces dans un chemin ou un nom de fichier, vous devez le mettre entre guillemets. Il faut donc utiliser:

ShellExecute(NULL, 
      _T("Open"), 
      _T("regsvr32"), 
      _T("\"C:\\New Folder\\Test.dll\""), 
      NULL, 
      SW_SHOWNORMAL); 

pour obtenir "C:\\New Folder\\Test.dll" passé à la fonction et non C:\\New Folder\\Test.dll.