2017-05-30 143 views
-4

我想從代碼(Windows7-64位應用程序)註冊.dll。 代碼片斷如下:註冊.dll使用regsvr32

正常工作:

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

失敗:

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

爲什麼會出現這種情況? Regsvr32不適用於路徑中的空間嗎?

+0

而且,返回的錯誤代碼是什麼? –

+0

返回碼是0x0000002a –

+0

@SandeepKumar按照[文檔】(https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx?f=255&MSPPError = -2147217396):_如果函數成功,則返回大於32_的值。 0x2A = 42,大於32,因此 - 成功。你甚至讀過文檔嗎? –

回答

0

如果路徑或文件名中有空格,則必須將它放在引號之間。因此,使用:

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

獲得"C:\\New Folder\\Test.dll"傳遞給函數和C:\\New Folder\\Test.dll