WindowsNT、2000、XPでAdministrator権限でログオンしソフトをインストール、起動を確認した後、ログオフし一般ユーザーでそのソフトを起動しようとしたところ、「ソフトウェアの初期化に失敗しました」というようなエラーメッセージが出てしまい、起動できませんでした。

複数台インストールし、1台だけこのような症状になりました。インストールしたexeファイル等の権限は全てフルコントロールになっています。
原因として何が考えられるでしょうか?
ソフトウェアはVB6で作成され、ディストリビューションウィーザードでインストーラーを作成したものからインストールしました。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/07/02 11:18:29
  • 終了:--

回答(4件)

id:fk_2000 No.1

えふけー回答回数249ベストアンサー獲得回数12004/07/02 12:48:10

ポイント1pt

http://dobon.net/vb/installer/installer2-1.html

ディストリビューションウィザード: VBに適したインストーラを探そう

VB6.0(SPの一致するもの)ランタイムのインストールがされていないのではないでしょうか。

windows2000ではmsvbvm50.dllがないといけないうわさがあるとのことです。

id:moochin2004 No.2

moochin2004回答回数36ベストアンサー獲得回数02004/07/02 12:48:52

ポイント30pt

http://www.yahoo.co.kr/

醤板! 坪軒焼

URLはダミーです。

失敗した1台はNTですか?2000ですか?XPですか?

おそらくXPではないでしょうか?

(一般ユーザのフォルダやレジストリに対する対する権限が微妙に厳しくなっていたように思います)

そのパソコン(XP)の一般ユーザの権限(インストールしたexeファイル等のフォルダではなくシステム関係のフォルダへのアクセス権限)が厳しくなっているからではないでしょうか?

さしあたりパワーユーザか最悪アドミニストレータグループに放り込んで違いを確認されてはいかがでしょうか?

(※直接の解決策は提示しておりませんのでポイントは結構です)

id:smileless

ありがとうございます。

OSは2000です。

ただ、権限についてはかなりついています。

一般ユーザーはシステムフォルダの内容を変更することが出来ないようになっています。

(それはインストールできた端末も同じなのですが・・・)

権限関係、もう一度確認してみます。

2004/07/02 18:03:18
id:cx20 No.3

cx20回答回数607ベストアンサー獲得回数1082004/07/02 13:09:29

ポイント20pt

http://www.microsoft.com/japan/msdn/windows/windows2000/win2000a...

このページは、存在しないか、削除されています。

URL はアプリケーション開発時の注意点です。

「セキュリティ問題」の項目を参照してください。

考えられる原因はいくつかあると思いますが、

・Program Files にファイルを書き込もうとしている

・レジストリ HKEY_LOCAL_MACHINE に書き込もうとしている

といった原因が該当しているのでは?と思います。

http://www.atmarkit.co.jp/fwin2k/win2ktips/111regmon/111regmon.h...

@IT:Windows TIPS -- Tips:レジストリへのアクセスをモニタする方法

また、自作のプログラムで無い場合、

どのようなレジストリを参照しているかが分かりません。

このような場合「regmon」というツールを使うと、

どのようなレジストリの項目にアクセスしているかを

調べることができます。

http://www.atmarkit.co.jp/fwin2k/win2ktips/059execau/execau.html

@IT:Windows TIPS -- TIPS:一時的にほかのユーザー権限でプログラムを実行する方法(ショートカット・メニューを利用する方法)

また、根本的な解決策では無いかもしれませんが、

「一時的にほかのユーザー権限でプログラムを実行する方法」

という方法があります。

参考まで。

id:smileless

ありがとうございます。

・Program Files にファイルを書き込もうとしている

Cドライブの直下にフォルダを作り、そこにEXEファイルを書き込んでいます。

インストール自体はできるのです。

・レジストリ HKEY_LOCAL_MACHINE に書き込もうとしている

ここには何も書き込んでいないようですが確認してみます。

2番目のツール便利ですね。今後活用したいと思います。

3番目、興味深いです。臨時のときに便利そうです。あとでゆっくり読ませていただきます。

2004/07/02 18:05:52
id:cx20 No.4

cx20回答回数607ベストアンサー獲得回数1082004/07/03 22:52:32

ポイント20pt

http://support.microsoft.com/?kbid=256986

Windows registry information for advanced users

先ほど補足です。

> ・Program Files にファイルを書き込もうとしている

と書いたのは

「インストール実行時」の話ではなく、

「アプリケーション実行時」の話です。

C:¥Program Files¥<App Name> の下にアプリケーションを

インストールすることは問題ありません。

ただ、アプリケーション実行時に設定ファイル(例:AppName.ini)

のようなものを読み書きする仕組みになっていると、

C:¥Program Files¥<App Name>¥AppName.ini

をアクセスしたときに、アクセス違反となり、

結果としてなんらかのプログラム(DLL)が「初期化失敗」となる可能性はあります。

また、

> ・レジストリ HKEY_LOCAL_MACHINE に書き込もうとしている

についてですが、

通常は、アプリケーション用のレジストリ項目を作成する場合は、

・HKEY_LOCAL_MACHINE(すべてのユーザーに適用。以下 ”HKLM” と省略します。)

ではなく

・HKEY_CURRENT_USER(ログオンしているユーザーに適用。以下 ”HKCU” と省略します。)

を使うことが推奨されています。

HKLM の場合、セキュリティの設定が厳しく、アクセス許可のある

ユーザーが Administrators に制限されている可能性があります。

この為、一般ユーザーでログオンしアプリケーションを実行した場合、

HKLM¥SOFTWARE¥<Company Name>¥<App Name>

にアクセスした場合、たとえば、書き込みを行おうとした場合に、

「アクセス違反」となり結果として「初期化失敗」となる可能性はあります。

また、これも根本的な解決策ではないのですが、

「regedt32.exe」というツールを使うと

強制的にレジストリのアクセス権を変更することが可能です。

先ほどの

HKLM¥SOFTWARE¥<Company Name>¥<App Name>

に対して、一般ユーザー(Users)にフルコントロールの

アクセス権を割り当ててあげると、アプリケーションが

動作するようになるかもしれません。

レジストリの設定を変更するのは大変危険ですから、

もし、行う場合は、十分に注意してから行うように

してください。

(動かなくなっても、保証しかねますので・・・(^^A)

また、トレースする別の方法として、

■ Dependency Walker(depends.exe)

http://www.dependencywalker.com/

Dependency Walker (depends.exe) Home Page

というフリーソフトを使う方法があります。

「Dependency Walker」はその名の通り、

アプリケーションの「依存関係(どのような DLL を利用しているか?など)」

を調査するためのツールです。

<簡単な使い方>

1. Dependency Walker(depends.exe)を起動

2. [File] - [Open] で対象となるアプリケーション(*.exe)を選択

3. [Profile] - [Start Profile] を選択し [OK] ボタンを押下

これを行うことで、アプリケーションが実行時に

どんな DLL を利用しているかが分かります。

(ログ表示ウィンドウにリアルタイムに情報が表示されます。)

「初期化に失敗しました」とエラーが表示される直前に

読み込まれた DLL を調べることによって、

どの DLL の読み込みに失敗したのかが分かる「かも」しれません。

参考まで。

id:smileless

詳しいご解説、ありがとうございました。

2004/07/07 00:01:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません