2017-05-30 24 views
-4

コード(Windows7-64ビットアプリケーション)から.dllを登録しようとしています。 コードスニペットは以下の通りです:regsvr32を使用した.dllの登録

作品罰金:

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 [documentation](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を取得します。

関連する問題