• ベストアンサー

OpenProfileでエラー

すみませんどなたか教えて下さい。 ASPで作成したアプリで接続時にエラーになる場合があります。 global.asaに記述。 Set Ini = Server.CreateObject("AAA") lRet = Ini.OpenProfile(iniファイル) IRetは-101となります。 時間が経つと正常に動く場合があります。 サーバ:Windows2003Server SP1 IIS:6.0 どなたかアドバイスをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.5

様子見ということなので、了解しました。 ただ、今後また再発する可能性がゼロではないので、 ご面倒かもしれませんが、問題のコンポーネントのソースコードや、 ドキュメント(設計書)を探して、今後のトラブル発生時の 重要リソースとして管理することを強くお勧めします。 なお、dll ですが、逆アセンブリすれば、できますが dll によっては、著作権違反に抵触する恐れがあるので ソースがないから、dllを除くという発想は、お勧めしかねるところです。 また、更に、できるのであれば、dllを使ってiniファイルを 読み込む形式ではなく、iniファイルをxmlファイルなどに移行し、 dllを使って情報読み込みをさせるのではなく、 ASP(VBScript)を使って、xmlファイルの内容を Application_OnStartで読み込ませるように改修した方が、 今後のためかと思います。 「エラーになります。でもソースがありません」では、 何も対処できないと思いますので、上記の件も含めて、 ご検討頂ければと思います。 あまりお役に立てなくてすいませんでした。

user10
質問者

お礼

ご丁寧にご指導いただきありがとうございました。 ドキュメントはなさそうですし、エラーもいつ再発するかわからないので、改修する方向で進めていきたいと思います。 本当にありがとうございました!

その他の回答 (4)

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.4

問題コンポーネントのソースがないとのことなので、 とりあえず、私の予測・想像の範疇では、 ・このコンポーネントは、何かの設定情報を持っている  iniファイル(設定ファイル)を読み込むために使っている ・そして、そのiniファイルの読み込みに、Win APIの  「GetPrivateProfileString」を使っている可能性が高い ・で、戻り値である、-101は、Win APIの  「GetPrivateProfileString」の戻り値の可能性が高い ということです。 以上のことをまとめると ・そのWebアプリ上に必要な独自の*.iniファイルがどこかにあります。  その*.iniを探し出し、%windir%\system32\ の下か、  そのコンポーネント(dll)が設置されている場所と  同じ場所に、*.iniファイルを移動してください ・*.iniファイルを所定の場所に設定したら、IISを再起動。 すると、動くと思います。 残念ながら、そのiniファイルを探さない限り、このエラーは 絶対消えないと思います。 もし、お使いのアプリが使用している*.iniファイルが 所定の場所にあるのに、エラーになるという場合は、 また別でご相談頂けますか? よろしくお願いします。

user10
質問者

お礼

最近は、このiniファイルを読み込めないというエラーがでなくなり、迷宮入りしそうなかんじです・・・。 アドバイスの通りiniファイルを移動してみましたが、移動するとすぐにエラーが出てWebアプリが起動しませんでした。 想像でしかありませんが、何かのタイミングの時にiniファイルが読み込めないようです。 とりあえず、再現待ちということにしたいと思います。。。 いろいろと教えていただき本当にありがとうございました。

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.3

Set Ini = Server.CreateObject("kCls100.kIni") lRet = Ini.OpenProfile(iniファイル) をGlobal.asaに記述されているとのことですが、 Application_OnStartの中で記述されてますか? もしくは、Session_OnStartの中で記述されていますか? (正式なFunction名は忘れましたが、ApplicationとSessionの どちらのLoadでやっているのか教えて下さい) ただ、今、この段階で言えるのは、コンポーネント「kCls100.kIni」 の中身がどうなっているのか、ソースコードが少しでも 公開されない限り、ご回答ができないので、 もう少し、情報を整理して頂き、情報をお寄せ頂けると助かります。 お手数をおかけいたしますが、もう少し補足情報を頂ければと 思います。よろしくお願いします。

user10
質問者

お礼

すみません、記述にミスがありました。 誤)system32配下にコピーしたdllファイルは6つあります 正)system32配下にコピーしたdllファイルは2つ、expファイルは2つ、libファイルが2つあります 以上です、よろしくお願い致します。

user10
質問者

補足

コメントありがとうございます。 まず、 Set Ini = Server.CreateObject("kCls100.kIni") lRet = Ini.OpenProfile(iniファイル) は、Application_OnStartで記述されています。 そして、コンポーネント「kCls100.kIni」 の中身がどうなっているのか(ソースコード)調べたいのですが、その調査方法がわかりません。 これを作った人は今いません。 サーバにあるどのファイルから調査したらよいのでしょうか?? ちなみに、レジストリに登録したdllファイルは2つ存在し、system32配下にコピーしたdllファイルは6つあります。 質問ばかりで申し訳ありませんがよろしくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

元々 2003サーバー IIS6.0で稼動していたのでしょうか? 前任者が開発したコンポーネントならその人にこの場合のえらーコードの意味は何かを確認しましょう また 該当部分のソースがあるならそちらを支障の無い範囲で投稿してみませんか 実行権限者のアクセス権限関連ではねられているような気もします

user10
質問者

補足

NTサーバーIIS4.0で稼働しています。また2000サーバー、IIS5.0でも稼働しています。 そして、前任者は今はいないためその人に確認することはできません。。。 該当部分のソースは、 Set Ini = Server.CreateObject("kCls100.kIni") lRet = Ini.OpenProfile(iniファイル) IRetは-101となります。 OpenProFileで、iniファイルをオープンする処理がうまくいかない時があります。 ちなみにこの処理はApplication_OnStart 内で実行しています。 実行権限者のアクセス権限関連で、、、ということですが、ほとんどエラーは出ません。 以前はサーバー再起動後に出たようですが今は再起動後にも出なくなりました。 引き続きどういうタイミングで出るか調査していきたいと思います。

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

Server.CreateObject("AAA") の「AAA」にあたる部分(CLSID)が わからないと、回答できません。 これは、独自でVBやVC++で作られたコンポーネントですか? もし、独自で作られているコンポーネントや誰かが作ったフリーの コンポーネントを使用しているのであれば、そのコンポーネントの作者 に聞かない限りエラーの原因は追究できないと思います。 取り急ぎ、CLSIDを教えて下さい。よろしくお願いします。

user10
質問者

補足

アドバイスありがとうございます。 「AAA」にあたる部分は「kCls100.kIni」です。初期の開発者が独自で作っているようです・・・。 そのコンポーネントの中身を詳しくみたいのですが、system32配下にある(使用していると思われる).dllになるんですよね? (検討違いでしたらすみません) その.dllを開いて詳細を確認するにはどのようにしたら良いのでしょうか??

関連するQ&A

  • Global.asaxで Server.CreateObject("ADODB.Connection")が出来ない

    ASP→ASP.netへ移行作業をしています。 Global.asaで、 set Application("DB") = Server.CreateObject("ADODB.Connection") を、 Global.asaxで、 Application("DB") = Server.CreateObject("ADODB.Connection") としたのですが、エラーで、 「コンポーネント 'ADODB.Connection' を作成できません。アパートメント スレッド コンポーネントは、<%@ Page aspcompat=true %> ページ ディレクティブを含むページでのみ作成できます。 」 となってしまします。 <%@ Page aspcompat=true %>を記述すればよいのかと思い、Global.asax中に記述しましたが、エラーになってしまいました。 'ADODB.Connection'を作成するには、どうすればよいでしょうか?

  • 緊急です。Wscriptで・・・

    IIS上にあるASPファイルからWscriptを呼び出して、VBで作成したEXEを実行させたいのですが、上手くいきません。コマンドプロンプトから実行させると上手くいくのですが、どうしてでしょうか?ASPはIIS上にあり、test.exeを実行すると別サーバにファイル(例 \\サーバ名\bbb\OK.txt)を作成するといったプログラムです。UNCパス指定だからでしょうか?よろしくお願いします。 ASPファイル内容--------- <%@ language="VBScript"%> <html> <body> テストASP <% Dim WshShell Set WshShell = Server.CreateObject("WScript.Shell") WshShell.Run "\\サーバ名\aaa\test.exe" , 0 , false Set WshShell = Nothing %> </body> </html>

  • ASPでExcelファイルを開く場合

    ASPでExcelファイルを開く場合WEBでいろいろ検索すると Set ObjExcel = Server.CreateObject("Excel.Application") ObjExcel.Workbooks.Open"****.xls" で開く方法が記載されていたので ためしているのいですが Set ObjExcel = Server.CreateObject("Excel.Application") でエラーが出てしまいます。 解決する方法はありますでしょうか。 環境:Windows XP,IIS,Office 2003 **************************************************** エラー タイプ Server オブジェクト, ASP 0178 (0x80070005) 許可を確認中に Server.CreateObject の呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。 *****************************************************

  • IIS6.0でCDONTS.NewMailを実行するとエラーが。。

    IIS 6.0で下記のASPを単純に実行してもエラーが 表示されます。 ---ASP--- Set bMail = Server.CreateObject("CDONTS.NewMail") bMail.From = "***@***.biglobe.ne.jp" bMail.To = "****@hotmail.com" bMail.Subject = "テスト" bMail.Body = "テストメール" bMail.Send Set bMail = Nothing ---エラー--- HTTP 500 - 内部サーバー エラー ------------ IIS5.0を使用しているときは全く問題なく送信 できていたのですが、Windows Server 2003に 変えてからCDONTS.NewMailを使用するとエラーが 表示されるようになりました。 SMTPサービスもタスクスケジューラーも起動して いるのですが。。。

  • ファイル内容書き換えでエラーが発生

    webサーバのosがWin2000IISで正常に動作しているASPがあるのですが、このほど、webサーバをXPで構築したところ、エラーとなります。Win2000とXPの違いなのか、わからないのですが、私がWin2000のころに設定したことをし忘れているためXPでエラーになっているのかもわかりません。下記記述でエラーとなります。(当然、c:\wwwcnt\cnt_mem.txtは存在します) Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません。 po001.asp, line 7 よろしくお願いいたします。 <% set fso = server.createobject("scripting.filesystemobject") set tso = fso.opentextfile("c:\wwwcnt\cnt_mem.txt",1,false) c_mem = tso.readline c_mem = c_mem + 1 tso.close set tso = fso.opentextfile("c:\wwwcnt\cnt_mem.txt",2,true) tso.writeline c_mem tso.close %>

  • ASP VBS global.asa Session_OnStart内

    ASP VBS global.asa Session_OnStart内でサーバーの環境変数取得 教えてください。global.asa内で環境変数って取得できるのでしょうか? 今までglobal.asaファイル内で直接書いていた文言を、環境変数から取得する、 というプログラム修正をしなければならなくなりました。 まず、VBSファイルを作成して、環境変数を取得することはできました。 その内容でそのままglobal.asaに記述すると、おそらく、環境変数が正しく取得できません。 このおそらくというのは、エラーが表示されないのです。 ただ、取得できていないので、その後の処理でエラーとなります。 環境は、 IIS 6 Windows2003server です。 いろいろ調べているのですが、いい回答が見つからず。 そもそも、global.asa内で環境変数を取得できるのかも分からず。 お願いします。

  • ASPからWscriptを利用して外部ファイル起動時のエラー

    他の掲示板で投稿されていた質問ですが、同様の現象に はまっています。ご存知でしたらご教授ください。 以下、引用。 環境:Windows XP SP2 , IIS5.1 サンプルプログラム: 1.test.asp  (Wscript.Shell.Runで同じフォルダにあるバッチファイルを実行) ----------------------------------------- <%@Language=VBScript%> <% Option Explicit dim WshShell Set WshShell = Server.CreateObject("WScript.Shell") WshShell.Run "C:\wsh\test.bat" Set WshShell = Nothing %> aaaaa ----------------------------------------- 2.test.bat   (同じフォルダのテキストファイルに文字列を出力) ----------------------------------------- echo aaa > c:\wsh\testbat.txt ----------------------------------------- 現象: 実行したところ、以下のエラーが発生します。 ----------------------------------------- Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません。 /wsh/test.asp, line 6 ----------------------------------------- 試したこと: 1.バッチファイルを実行する箇所をなくしたASPを作成   ⇒ 正常に動きました 2.他の環境での確認   ⇒ Windows2000Server : 正常に動きました     後輩のXP SP2    : 同様のエラーが発生しました 3.仮想フォルダの匿名アクセスのチェックを外す   ⇒ 正常に動きました 4.IUSR_,IWAM_ユーザーにAdministrators、Users,Guests等の権限をふる   ⇒ 同様のエラーが発生しました 5.ASPファイルなどを格納しているフォルダにIUSR_、IWAM_を追加し   フルコントロールの権限を与える   ⇒ 同様のエラーが発生しました

  • ActiveX → VB を起動するとCreateObjectできない。

    初めまして。 2003Server+IIS6.0の環境でASP内のActiveXからShell関数でvbのexeを実行させる処理を作成しております。 サーバーから直接exeを実行させると正常に動くのですが、Web上からasp→ActiveX→exeを起動させるとテキストに書き込む処理はできるのですが、「CreateObject」文で「ActiveX コンポーネントはオブジェクトを作成できません」というエラーが返ります。 VB内でなぜ「CreateObject」が出来ないのかご存知の方はいますでしょうか。 宜しくお願いいたします。

  • ASPが実行できない(エラー500

    新しくPCを購入し、セットアップしたのですが、 自分のマシンでASPを実行すると、「HTTP 500 - 内部サーバー エラー 」となってしまいます。 環境は、 OS:Windows2000(SP4)+IE6(SP1) 主なアプリ:VS6(SP6)、MSOffice2000(SP3) CyberLink関係、NVIDIA Firewall、Norton AntiVirus ぐらいです。 http://localhost/ で500番のエラーがでます。 もちろん、IISはインストールしてあります。 困っています。誰か助けてください。

  • エラーの意味が??

    ASPのエラーで HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス ---------------------------------------------------------------------- エラー タイプ OrderList (0x800A004B) パス名が無効です。 /A/B/C/List/or01L.asp, line 37 とのエラーが表示されます。 ASPファイルの中身 '***BO呼び出す*** Set OrList = Server.CreateObject("OrderList.OrderList") '***SQLを発行*** If OrList.GetOrderList() Then ← 37行目 OrderList はDLLの名前で or01L.asp の37行目でDllの関数を呼び出すところでのエラーのようですが、理由が見当たりません。 同じソースを違う環境での動作確認がとれています。特別なIISの設定をしないといけないのでしょうか。 どうかご教授お願いします。