|
分類:[レガシ ASP]
【環境】 OS:Win Svr 2022 Std ASP:IIS10+Classic ASP(VBScript) CGI:VB6 旧DLL:VC++5.0(コメントから、ソースなし) 新DLL:C# 12(VS2022Pro) Framework:4.7.2
【経緯】 ・Webサーバリプレースによる動作検証のタイミングで、CGIが呼んでいるDLLが動作しない(エラー)になるのを確認 ・ソースを探すも見つからず、in/outから互換COMをC#で作成 ・サーバ上でCGIを単体模擬実行すると、正常に動作 ・IISから実行させると、実行ログは出力されるが、80070002エラーが発生している ・GetUserName APIはIUSRを返却している為、IISからDLL(COM)が見つからないと想定できるが原因が不明
【状態】 1.テストEXE(VB6)及び、CGI(VB6)の単体実行は正常に可能 2.IIS(ASP)経由でCGIを実行すると、「(80070002)Automation error The system cannot find the file specified.」が発生する ※その時の実行ユーザ(GetUserName API)は「IUSR」であることを確認 3.DLL(COM)は管理者でregasmを行い、一般ユーザでは動作しているのを確認 4.エラー発生時にCGI自体は動作しているのを確認(実行権限等ではない認識:DLL(COM)もIUSRに実行権限は確認)
【プロジェクトの設定(念のため)】 1.「アセンブリをCOM参照可能にする」にチェック 2.「COM相互運用機能の登録」にチェック 3.プラットフォームはx86 4.(IIS アプリケーションプール) 32ビットアプリケーションの有効化=True
【エラーログ】 ユーザID :IUSR [-2147024894(80070002)]-2147024894 Automation error The system cannot find the file specified.
よろしくお願いします。
|