Help us understand the problem. What is going on with this article?

発掘 :Windows7 に VB6.0 をインストールするとエラーが出る :

More than 3 years have passed since last update.

発掘の要旨

本ブログ記事は
VB6のIDEをWindows10で - 多摩川お笑いでじたる研究所
他随所に引用されているにも関わらずリンク切れを起こしており、発掘したものである。
本編はWindows7を主体に記述されており、Windows8 / 10 の動作は不明であるが64bit Officeでは起動しないようだ。

発掘した記事

ttp://from.hatenablog.jp/entry/2013/08/31/113432
リンク切れのためつながらず
2013-08-31
Windows7 に VB6.0 をインストールするとエラーが出る
仕事でまだ VB6.0 を使うケースがあるが、PCの方は、いい加減XPからWindows7に乗り換えなければなりません。

幸いにして、VB6.0 ランタイムは、Windows7/8 になっても未だに提供されており、初期状態でプレインストールされています(ランタイム全てではないですが)。

しかし、Visual Basic 6.0 (ランタイムじゃなく開発ツールのほう;以降こちらをVB6.0と書く)となるとちょっと事情が異なります。

VB6.0 を素直に Windows7 にインストールし、ServicePack 6 をあて、さらに VB6 SP6 のセキュリティロールアップバッチを適用した場合、どうにも正常に動作しません。

具体的には、以下の2つのエラーがちょくちょく発生します。
「システムレジストリへのアクセスでエラーが発生しました」

これは、どうも VB6.0 自身がレジストリを書き換えたいときに発生するようです。(OCXファイルのキャッシュであるOCAやEXDファイルを生成して、それらをレジストリに登録する、など)

要は、VB6.0 に管理者権限がないと。

大抵のアプリなら、ここで UAC に従って「変更させて良いか」を尋ねてくるのですが、VB6.0 の場合はなぜか UAC が機能せず、エラーが表示されるようです。

そしてなぜか2回目以降は表示されません。果たして、レジストリに登録されたのか、それとも VB6.0 が登録を諦めたのか?

最も簡単な解決方法は、
VB6.EXE のプロパティ → [互換性] タブ → [すべてのユーザーの設定を変更] → [管理者としてこのプログラムを実行する] にチェックを入れる
ことでしょうね。

VB6.0 の起動時に毎回 UAC のウィンドウで問い合わせが来ますが、少なくともレジストリエラーは発生しなくなります。

***初めて VB6.0 を起動するよりも前に設定することをお勧めします。
「オブジェクトライブラリが登録されていません」

とあるプロジェクトでとあるコンポーネントを追加しようとしたとき、ちゃんと OCX ファイルがレジストリに登録されているにも拘らず、登録されていないという旨のエラーがでて追加できないことがあります。

特に、MSCOMCTL.OCX での発生確率が高いようです。

解決法としては、regsvr32 で手動でOCXファイルを登録しなおしたり、自分でプロジェクトファイルをいじって OCX のバージョンを下げたりといった方法が散見されますが、うちの場合はそれでもアウトでした。

この場合は、regtlib.exe というコマンド(たぶん Visual Basic 6.0 に付いてくる)で、タイプライブラリを再登録すると良いようです。

例えば Windows7 HomeEdition (x86) での例を挙げますと、

1.コマンドプロンプト(Cmd.exe)を管理者権限で起動する。
2.下のコマンドを実行する。
> C:\Windows\regtlib.exe C:\Windows\system32\msdatsrc.tlb
これで、登録できなかったコンポーネントも登録できるようになると思います。
(編注:ただし当方のWindows10HOMEのPCではC:\Windows\regtlib.exeが見つからず成功しなかった。)

以上、備忘録として。

実際

注意

※あくまでも個人の経験です。あなたのPCで成立するかは不明です。
※Windows10 Home 64 bitです

ダウンロード

Access2000>倉庫 TreeViewを使う-MAHOUTUKAINO.com
からサンプルのMDBファイルを入手する
■[program]Windows7+VB6で MSCOMCTL.OCX がうまくインストールできなかった問 - くらげのChangeLog
・コモン コントロールの再インストール
http://www.microsoft.com/ja-jp/download/details.aspx?id=10019
Microsoftのサイトより、「Microsoft Visual Basic 6.0 コモン コントロール」をインストールする。
インストールすると再起動のメッセージが出るので再起動する
CMD.Exeを管理者権限で起動する
CD\
CD C:\Windows\SysWOW64
regsvr32 /u C:\Windows\SysWOW64\MSCOMCTL.OCX
regsvr32 C:\Windows\SysWOW64\MSCOMCTL.OCX
管理者権限より起動しないと上記のコマンドで
DLLRegisterServerへの呼び出しは0X8008201cにより失敗
エラーコードで検索しろという実にふざけたメッセージが出る。

本当は再起動するが求められるが無視してAccessのファイルを起動する。
参照設定に上記のファイルとMSCMCTL2.OCXを登録する。
参照設定で検索するときActiveXに切り替えないと見つからない。
これでAccessを立ち上げるところまではいくが、エラーがフォームを開くとエラーが発生する。
Set nodX = TreeView1.Nodes.Add(, , "A0", "一覧") '先頭のノードを設定
の行。

参考

TreeView コントロール (Visual Basic 6.0 ユーザー向け)
更新 : 2007 年 11 月
Visual Basic 6.0 の TreeView コントロールは、Visual Basic 2008 の TreeView コントロールに置き換えられています。プロパティ、メソッド、イベント、および定数の中には、名称が異なるものや、動作の異なるものもあります。

Q11Q
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした