DOBON.NET DOBON.NETプログラミング掲示板過去ログ

XPのVB.NET2003で開発したアプリをVISTAでも動かしたい

環境/言語:[VB.NET2003 .NET Framework 1.1(XPの開発環境)]
分類:[.NET]

こんにちは。VBで教えてください。
XPのVB.NET2003で作成したアプリを、今までXPで動作させていました。
それをVISTAで動作させようとしたら動きません。
System.NullReferenceException: Object reference not set to an instance of an object.
と出ます。

これは
@単純にアプリの中でNULL参照を見落としているだけでしょうか?
Aそれとも、OSが変わったことで実行環境やランタイムなどを変更しなけれ
ばならないのでしょうか(具体的にはどのように変更するのでしょうか)

初心者的な基本的な部分を教えていただけると幸いです。
宜しくお願いいたします。
> これは
> @単純にアプリの中でNULL参照を見落としているだけでしょうか?

  その通りだと思います。

> Aそれとも、OSが変わったことで実行環境やランタイムなどを変更しなけれ
> ばならないのでしょうか(具体的にはどのように変更するのでしょうか)

  OS側のサポート(対応)範囲がありますので、対応しない
  ことにはどうにもならんでしょう・・・

  最低でも、2005(.NET Framework 2.0)にアップした方がよい
  かと。

以上。
> XPのVB.NET2003で作成したアプリを、今までXPで動作させていました。
> それをVISTAで動作させようとしたら動きません。
> System.NullReferenceException: Object reference not set to an instance of an object.
> と出ます。

  追伸・・・
  何をしてるソフトでしょうか?
  XPにはインストールされていて、VISTAには無い
  ものとか、バージョンが違うとか・・・

  その辺を解決すれば、動作するのはするはずです。

以上。
■No24057に返信(オショウさんの記事)
>>XPのVB.NET2003で作成したアプリを、今までXPで動作させていました。
>>それをVISTAで動作させようとしたら動きません。
>>System.NullReferenceException: Object reference not set to an instance of an object.
>>と出ます。
>
>   追伸・・・
>   何をしてるソフトでしょうか?
>   XPにはインストールされていて、VISTAには無い
>   ものとか、バージョンが違うとか・・・
>
>   その辺を解決すれば、動作するのはするはずです。
>
> 以上。


はい、Frameworkは3.5にしております。。
ちなみに端末に接続したスキャナから画像を読み込み、適当な情報を
付加したサーバに送るためのアプリケーションなのです。
付加した情報をサーバに送るときにエラーとなります、
その関数で引数多いのでその辺りですかね。
具体的には初期化を全部しつこいぐらいにやっておけば解決するでしょうか?
XPはその辺りはあまり厳しくないのでしょうか。
> はい、Frameworkは3.5にしております。。

  意味が解らん・・・

  XPの開発環境は、.NET Framework 1.1
  VISTAでは、.NET Framework 3.5 ?

  それはただ単にランタイムとしてFrameworkのそのバージョンが
  導入されていると言うことですネ?!

  であれば、VISTAでは、ランタイムは、下位互換で動作している
  と言うことになるんですが・・・

  VISTAには、わざわざ.NET Framework 1.1 は導入していないと言
  うことですネ?!

> ちなみに端末に接続したスキャナから画像を読み込み、適当な情報を
> 付加したサーバに送るためのアプリケーションなのです。
> 付加した情報をサーバに送るときにエラーとなります、
> その関数で引数多いのでその辺りですかね。

  スキャナはまぁ〜いいとして・・・
  『サーバーに送る』とは、どういった機能を使ってやって
  いるのでしょうか?その手法が問題ですネ!

> 具体的には初期化を全部しつこいぐらいにやっておけば解決するでしょうか?
> XPはその辺りはあまり厳しくないのでしょうか。

  ええ〜と・・・

  セキュリティ(権限)にひっかかる機能(クラス)があり
  ますので、一度、管理者権限でその実行形式プログラム動
  作させてみて下さい。

  動作すれば、権限の解決!

  動作しない場合は、その『サーバーに送る』機能のどの
  コードでエラーしているのか突き止めないことには解決
  しません。

  頑張って下さい!

以上。
■No24061に返信(オショウさんの記事)
>>はい、Frameworkは3.5にしております。。
>
>   意味が解らん・・・
>
>   XPの開発環境は、.NET Framework 1.1
>   VISTAでは、.NET Framework 3.5 ?
>
>   それはただ単にランタイムとしてFrameworkのそのバージョンが
>   導入されていると言うことですネ?!
>


すいません、1.1も入れてます。

>   であれば、VISTAでは、ランタイムは、下位互換で動作している
>   と言うことになるんですが・・・
>
>   VISTAには、わざわざ.NET Framework 1.1 は導入していないと言
>   うことですネ?!
>
>>ちなみに端末に接続したスキャナから画像を読み込み、適当な情報を
>>付加したサーバに送るためのアプリケーションなのです。
>>付加した情報をサーバに送るときにエラーとなります、
>>その関数で引数多いのでその辺りですかね。
>
>   スキャナはまぁ〜いいとして・・・
>   『サーバーに送る』とは、どういった機能を使ってやって
>   いるのでしょうか?その手法が問題ですネ!
>
>>具体的には初期化を全部しつこいぐらいにやっておけば解決するでしょうか?
>>XPはその辺りはあまり厳しくないのでしょうか。
>
>   ええ〜と・・・
>
>   セキュリティ(権限)にひっかかる機能(クラス)があり
>   ますので、一度、管理者権限でその実行形式プログラム動
>   作させてみて下さい。
>
>   動作すれば、権限の解決!
>
>   動作しない場合は、その『サーバーに送る』機能のどの
>   コードでエラーしているのか突き止めないことには解決
>   しません。
>
>   頑張って下さい!
>

権限ですね。頑張ります。
Adminで入って手で実行すればよいですか?
あと1個だけ教えてください。
mscorlib.dll
というランタイムのバージョンなどは関係ないでしょうか?
VISTAは
1.1.4322.573
ですがXPは
1.1.4322.2407
なんです。

でもXPのmscorlib.dllを持っていっても、exception発生のためにアプリが起動しませんでした。。


> 以上。
2009/02/22(Sun) 16:07:50 編集(投稿者)

# 引用は適切に。

■No24062に返信(k-nmさんの記事)
> 権限ですね。頑張ります。
念のため、.NET のコード・アクセス・セキュリティが
FullTrust である事を確認しておいてください。もっとも、エラー内容が
(SecurityException ではなく)NullReferenceException という事は、
コード・アクセス・セキュリティは関係ないかも知れませんが。

あとは、ファイルの読み書きを行っている箇所の有無も確認してください。
マイ ドキュメントやデスクトップなど、ユーザー別フォルダへの出力ならば
問題ありませんが、C:\ 直下や Program Files 配下などへの書き込みは NG です。


> Adminで入って手で実行すればよいですか?
Admin というのは、OS の Administrators グループのことでしょうか?

> すいません、1.1も入れてます。
日本語 Language Pack は導入済みですか?

> VISTAは
> 1.1.4322.573
> ですがXPは
> 1.1.4322.2407
.573 は、.NET 1.1 の初期バージョン(RTM)の物です。
.2407 は hotfix パッチが適用された物です。おそらくは、現時点の最新版かと。

ちなみに、.NET 1.1 Service Pack 1 の物は .2032 というバージョンです。

この他、OS の Service Pack やセキュリティパッチなどにより、
.2300 や .2402 といったバージョンも存在します。

> でもXPのmscorlib.dllを持っていっても、exception発生のためにアプリが起動しませんでした。。
そのような事をしてはいけません。
■No24065に返信(魔界の仮面弁士さんの記事)
> 2009/02/22(Sun) 16:07:50 編集(投稿者)
>
> # 引用は適切に。
>

はい。

> 念のため、.NET のコード・アクセス・セキュリティが
> FullTrust である事を確認しておいてください。

自分のXP(開発環境)はMy_Computer_Zone がFullTrustになっておりました。
動作させたいVISTAは.NET Framework 1.1 Configuration
というものを管理ツールで選択し、Allows full access to all resources
でありました。
XPはNET Framework 1.1 構成と日本語ででましたけど。。

> あとは、ファイルの読み書きを行っている箇所の有無も確認してください。
> マイ ドキュメントやデスクトップなど、ユーザー別フォルダへの出力ならば
> 問題ありませんが、C:\ 直下や Program Files 配下などへの書き込みは NG です。

C直下とかはないです。
フォルダを作成してその下に出しています。

> Admin というのは、OS の Administrators グループのことでしょうか?
>

はい、AdministratorsグループのAdministratorのつもりで書いたのですが、
実行しているユーザが Administrator(管理者)権限を持っておりました。


> 日本語 Language Pack は導入済みですか?
>

3.5 Language Pack 日本語、が入っております。

>>VISTAは
>>1.1.4322.573
>>ですがXPは
>>1.1.4322.2407
> .573 は、.NET 1.1 の初期バージョン(RTM)の物です。
> .2407 は hotfix パッチが適用された物です。おそらくは、現時点の最新版かと。
>
> ちなみに、.NET 1.1 Service Pack 1 の物は .2032 というバージョンです。
>
> この他、OS の Service Pack やセキュリティパッチなどにより、
> .2300 や .2402 といったバージョンも存在します。
>

開発環境よりも新しければ問題ないですよね。

>>でもXPのmscorlib.dllを持っていっても、exception発生のためにアプリが起動しませんでした。。
> そのような事をしてはいけません。

はい、申し訳ありません。

ネットで見たら
http://www.microsoft.com/japan/msdn/vstudio/support/windowsvista/vs03onvista/default.aspx
な記事を見つけて、VB.NET2003で作成したものはVISTAでは動作しないのでしょうか。。。。。


バタバタしてすいません、再度コメントをいただければと思います。
宜しくお願いいたします。
自己追記です。
VISTAですが、管理ツールで見ると.NET Framework 1.1しか出てきません。
コントロールパネル>プログラムと機能(従来のプログラムの追加と削除)
でみると、.NET Framework 3.5が表示されているのですが。。。
これはおかしいですか?
2009/02/22(Sun) 18:01:54 編集(投稿者)

■No24066に返信(k-nmさんの記事)
> 開発環境よりも新しければ問題ないですよね。

今はその逆で、開発環境よりも古くなっていますよね。

また、もしも開発環境よりも新しかったとしても、今回のように
環境による差異が生じているような状況では、問題点を特定しやすくするためにも
Service Pack のバージョン等を、可能な限り一致させておきましょう。

Service Pack の有無で動作が異なるケースも報告されているのですし。
http://dobon.net/vb/bbs/log3-19/11595.html


> http://www.microsoft.com/japan/msdn/vstudio/support/windowsvista/vs03onvista/default.aspx
その記事は、「VS.NET 2003 で作成したアプリ」を Vista で動作させる時の
話ではなく、「VS.NET 2003 の開発環境」を Vista で動作させる場合の話かと。


> 管理ツールで見ると.NET Framework 1.1しか出てきません。
構成ツールの有無と、.NET ランタイムの有無は別物です。

.NET 1.x は、再頒布パッケージでもインストールされますが、
それ以降のバージョンでは、再頒布パッケージには同梱されておらず、
SDK と共に配置されるようになっています。
http://msdn.microsoft.com/ja-jp/library/2bc0cxhc.aspx
丁寧なご回答ありがとうございます。
XPで作成したアプリ→VISTAに持っていくとき、
実行環境(NET Framework1.1)をなるべく同一環境に
する方向で行きたいです。
尚、大変素人な質問で申し訳ありません。
以下の点、教えていただけませんでしょうか。

@mscorlib.dll(1.1.4322.2407)だけを新しくしたら
問題ですね。
XPはNET Framework1.1 (1.1.4322.2407)
なので、
VISTAには
NET Framework1.1の最新
NET Framework1.1のSP1
をダウンロードして
インストールすることで問題ないでしょうか?

A上記のXPには
 「.NET Framework 1.1 SP1 」
 が入っている、ということでしょうか?
 または確認方法はありますか?

BNET Framework1.1でVB.NET2003で作成したアプリケーションを
NET Framework2.0で動かすことはできませんか?
(上位互換が通常あると思いますが)

ご指摘いただけませんでしょうか。
宜しくお願いいたします。
■No24076に返信(k-nmさんの記事)
> NET Framework1.1の最新
> NET Framework1.1のSP1

加えて、1.1 の日本語 Language Pack も入れておいた方が良いかと。


> 「.NET Framework 1.1 SP1 」
> が入っている、ということでしょうか?
> または確認方法はありますか?
google で、『.net Framework バージョン 確認』などのキーワードで
検索してみてください。幾つかの情報が得られるかと思います。
http://www.atmarkit.co.jp/fwin2k/win2ktips/246checkvdnfw/checkvdnfw.html
http://support.microsoft.com/kb/318785/ja


> NET Framework1.1でVB.NET2003で作成したアプリケーションを
> NET Framework2.0で動かすことはできませんか?

2.0 と 1.1 の両方が入っている環境では、1.1 が使われます。

1.1 が入っておらず、2.0 のみ入っている環境に対しては、
2.0 で動作させる方法と、1.1 専用とする方法とがありますが、
基本的には、“同じバージョンで動かした方が無難”です。

どうしても異なるバージョンで動作させたいのであれば、
アセンブリ バージョンのリダイレクトを行ってください。
(『バージョン リダイレクト』で検索してみてください)


> (上位互換が通常あると思いますが)
こちらをご覧下さい。
http://msdn.microsoft.com/ja-jp/library/cc825634.aspx
http://msdn.microsoft.com/ja-jp/library/cc825635.aspx
> google で、『.net Framework バージョン 確認』などのキーワードで
> 検索してみてください。幾つかの情報が得られるかと思います。
> http://www.atmarkit.co.jp/fwin2k/win2ktips/246checkvdnfw/checkvdnfw.html
> http://support.microsoft.com/kb/318785/ja
>
確認しました。
@開発のXP端末には
.NET Framework 1.1 SP1
および
.NET Framework 1.1 日本語 Language Pack (初期版)

がインストールされておりました。

A一方、実行環境のVISTAは
.NET Framework 1.1 (初期版)
および
.NET Framework 1.1 日本語 Language Pack (初期版)
たインストールされておりました。

Bまた、実行環境のXPがあるのですがそれもVISTA
と同じでした。

動作するのは@は当然として、BのXPも動作します。
AのVISTAは動作しません。
ということは、
★.NET Framework 1.1 SP1
をVISTAにインストールすれば動作する、と思いますが、
.NET Framework 1.1 (初期版)
しかインストールされてない実行用XPは動作するんですよね。
この辺りはやはりOSの違いでしょうか。
とにかく★.NET Framework 1.1 SP1
をVISTAにインストールするのが最適でしょうか?
■No24100に返信(k-nmさんの記事)
> ★.NET Framework 1.1 SP1
> をVISTAにインストールすれば動作する、と思いますが、

今の段階ではまだ何ともいえません。

> この辺りはやはりOSの違いでしょうか。

どうコードを実行したときに NullReferenceException になっているのかを
追跡しないことには、原因はわからないと思います。

> とにかく★.NET Framework 1.1 SP1
> をVISTAにインストールするのが最適でしょうか?

インストールした方が良いとは思いますが、
それで解決するかどうかは別問題です。
コメントくださった方々、本当にありがとうございました。
実際の環境でご指摘いただいた環境合わせ等の作業を行うのは
近日になるのです。
教えていただいた点を整理して、当日作業することになります。
本当にありがとうございました。
また結果をお知らせいたします。

・・・ということでまだ解決することはできません。。。
皆様、コメントありがとうございました。
結局、.NET Framework1.1の環境をSP1にして(開発XP環境と同一にした)
のですが、同じでした。
ソース解析をしたら、AP側でやはりエラーが出ている模様でした。
ただ、NULL参照どうこうではなくて、サーバと通信するための
特定のライブラリでエラーが出ておりました。
今までXPまでは発生していなかったのですが、まさにこのライブラリを
VISTA対応する必要がありそうです。

とにかく、さまざまなコメントをしていただいた方々、本当にありがとう
ございました。
本件、解決済みとさせてください。
本当にありがとうございます。
色々問題がありまして、直接は私のAPではなかったですが、
環境(.NET Frameworkのバージョン等)ではなく、
変数の使用に関わることでした。
コメントいただいた方々、本当にありがとうございます。
やはり自分のAPだけでなく、関連するAPの方も調べなくては
ダメなものですね。
ちなみにライブラリのVISTA対応等は無関係でした。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板