同じプロジェクトを違うPCからは実行できない


おおたに  2005-12-27 22:59:52  No: 129261

こんにちは。助言をお願いしたく、投稿させて頂きます。

開発環境のパソコンを更新すべく、新PCにVB6をインストールしました。
しかし旧PCでは正常に(ステップ)実行できたプロジェクトが、新PCでは違う動作をしてしまいます。
調べていくと、以下の命令で新旧の動作結果が異なっています。

1:    Set ini = CreateObject("IniFileLib10.CIniFile")
2:    If ini Is Nothing Then
3:        SettingFileLoadIni = False
4:        Exit Function
5:    End If

旧PCでは3〜4行目は実行されませんが、新PCでは実行しています。
新PCではiniは確かにNothingになっています。

あくまで同じプロジェクトを実行していますので、設定関係も同じはずですが、
もしや参照設定が怪しいか?と思い比較してみましたが、どちらも同じ"IniFileLib10"が指定されています。
あとは何をチェックしたら良いか判らず、迷宮入りしてPC移行が滞っています。

アドバイスをよろしくお願いします。


Blue  2005-12-27 23:18:28  No: 129262

CreateObjectするとき(レイトバインディング)は
> 参照設定
は関係なかったような。


おおたに  2005-12-28 00:56:11  No: 129263

ご指摘ありがとうございます。
今調べた範囲ではCreateObjectでは参照設定は関係ないようですね。

CreateObjectが"IniFileLib10.CIniFile"を見つけることができず、Nothingを返してるのでしょうか?
"IniFileLib10"は前任者が作ったdllなのですが、場所を指定する意味で参照設定していました。
この場合CreateObjectが目的のオブジェクトについて、どこを探すのでしょうか?
場所の指定方法、および 場所を指定しなければどこを探すのでしょうか?
アドバイスよろしくお願いします。


もげ  2005-12-28 01:36:02  No: 129264

旧PCのレジストリHKEY_CLASSES_ROOT\CLSID 以下を探してみてください

レジストリを検索するためには、
ファイル名かCLSIDが判れば...
参照設定してあるなら、CLSIDは  .vbpファイルをメモ帳で開けば見れますね。


もげ  2005-12-28 01:39:40  No: 129265

「IniFileLib10.CIniFile」でレジストリを検索してみてください。


おおたに  2005-12-28 03:13:50  No: 129266

もげさん、ありがとうございます。

.vbpファイルをメモ帳で開くと、dllファイル名が書いてありました。(IniFileLib10.dll)
「IniFileLib10.CIniFile」でレジストリを検索すると、新旧とも同じCLSIDが記載されていました。({01749A2E-DEDD-4C6A-8E76-5D4416AF9A53})
CLSIDでそれぞれのレジストリを検索すると同じ内容のキー、値がありました。先のIniFileLib10.dllのパスも同じでした。

これからすると、予想していた"IniFileLib10.CIniFile"が見つからない事が原因ではなさそうな気がしてきました。
うーん、困りました。他の原因系も考えて見ます。

また何かアドバイスありましたらよろしくお願いします。


魔界の仮面弁士  2005-12-28 09:47:32  No: 129267

エラーになるのではなく、動作が違うという話であるならば……

可能性1) CIniFile 自体ではなく、その内部で利用されている
  コンポーネントのバージョンが、それぞれのPCで異なっている。

可能性2) Win2000 や WinXP の Side-by-Side 実行が適用されている。


魔界の仮面弁士  2005-12-28 10:46:23  No: 129268

可能性3) ログインユーザーの権限不足。
  たとえば旧PCでは、ローカルPCへのAdministrators権限があったが、
  新PCでは、Usersに格下げされていたとか。

> 旧PCでは3〜4行目は実行されませんが、新PCでは実行しています。
> 新PCではiniは確かにNothingになっています。
この時、On Error ステートメントは使っていますか?

使っているのなら、CreateObject が Nothing を返した後で、
Err.Number, Err.Description, Err.Source に対して、
何か追加情報が綿されていないかをチェックしてみてください。


おおたに  2005-12-29 07:25:26  No: 129269

魔界の仮面弁士さん、ありがとうございます。

せっかくアドバイス頂いておりますが、今日はPCに触れないまま仕事納めになってしまいました。
休み明けに確認結果をご報告&相談させて頂きたいと思います。
まずはありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加