none
xpで動作していたアプリケーションをwindows 7(32bit)でも使えるようにしたい。 RRS feed

  • 質問

  • xpでは正常に作動していたアプリケーションですが、win7で(アクセスの.mdbファイルに)保存しようとすると、下のエラーになってしまいます。

    「アプリケーションのコンポーネントでハンドルされていない例外が発生しました。[続行]をクッリクすると、アプリケーションはこのエラーを無視し、続行しようとします。[終了]をクリックすると、アプリケーションは直ちに終了します。

    更新可能なクエリが必要です。」

    どうやってこのアプリのインストーラーを作ったのか忘れってしまっているような年ですので、なんとか簡単にwin7でも使える方法があるといいなと思うのですが、中古のXPパソコンを買った方が早いでしょうか。

    2015年1月31日 4:09

回答

  • 確実じゃない中で推測で書いてしまうのはあまりよくないのですが、そのプログラムを「管理者として実行」で起動した場合は正常に動くのでしょうか。
    (「管理者グループにいるアカウントで実行する」だけではなく、右クリックメニューから「管理者として実行」を選ぶと言うことです)

    これが正しいとすると、UAC について勉強していただき、今時のプログラムの作り方を学んでいただくことになります。
    たとえば、Program Files に書き換え対象のデータを置かず、Application Data などのユーザーが書き込める場所に置く、どうしてもすべてのユーザーで共通にしたいなら ProgramData に保存するなど。なお、パスは Environment.GetFolderPath で得る必要があります。

    • 回答の候補に設定 add1024 2015年2月12日 3:58
    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 9:50
    モデレータ
  • C# のフォーラムで質問されているということは、C# で作った .NET アプリなんですよね?

    > (アクセスの.mdbファイルに)保存しようとすると、

    上記のところで例外がスローされるのに対応しさえすれば問題は解決できるのかどうか分かりませんが、とにかく、まずはそこのところの C# のコードを開示してもらえないと、話は一歩も先に進まないと思います。

    開示できますか? コードは開示できないのであれば、どのようなコードになっているか文章で説明できますか?

    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 4:24
  • セキュリティ上問題にならないなら、Windows7のXPモードを使うのが早いかと思います。古いWindowsXPパソコンを利用するのは、セキュリティ上の問題だけでは無く、ハードウェアの耐久性の面からも不安があるので、一時しのぎとしてしかお勧めできません。
    セキュリティ上Windows XPを使うわけには行かないのであれば、Windows 7上で動作させる方法を探すことになります。まずは、アプリケーションを作成するために使用した言語は何でしょうか?古い言語(.Net Framework 1.1以前の.NetやVB6.0等)はWindows7に対応していないので、Windows7に対応する言語で手直しをする事になります。
    もしWindows7に対応している言語で作成されているのであれば、まずは実行ファイルのプロパティにある互換性のタブからWindowsXPを選んだり、特権レベルを与えるなどして動作させてみては如何でしょう?もしこの設定変更で動作するのであれば、当面はそのまま使い続ける事が出来るかと思います。
    もしそれでも動作しないのであれば、Windows7に対応するように修正を加える事になります。ごく一般的なアプリケーションであれば、使用するフォルダの変更などで動作する可能性が高いと思います。


    甕星

    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 8:21
  • まずは以下について確認してみては如何でしょう。リンク先はASPについてのようですが、特に権限周りなどは共通の確認事項かと思います。 https://support.microsoft.com/kb/175168/ja?wa=wsignin1.0
    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 8:57
    モデレータ
  • ファイルの書き込み権限の可能性が高いと思いますが、あとは、そのmdbが「読み取り専用」になっているかですね。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 11:29
    モデレータ

すべての返信

  • C# のフォーラムで質問されているということは、C# で作った .NET アプリなんですよね?

    > (アクセスの.mdbファイルに)保存しようとすると、

    上記のところで例外がスローされるのに対応しさえすれば問題は解決できるのかどうか分かりませんが、とにかく、まずはそこのところの C# のコードを開示してもらえないと、話は一歩も先に進まないと思います。

    開示できますか? コードは開示できないのであれば、どのようなコードになっているか文章で説明できますか?

    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 4:24
  • セキュリティ上問題にならないなら、Windows7のXPモードを使うのが早いかと思います。古いWindowsXPパソコンを利用するのは、セキュリティ上の問題だけでは無く、ハードウェアの耐久性の面からも不安があるので、一時しのぎとしてしかお勧めできません。
    セキュリティ上Windows XPを使うわけには行かないのであれば、Windows 7上で動作させる方法を探すことになります。まずは、アプリケーションを作成するために使用した言語は何でしょうか?古い言語(.Net Framework 1.1以前の.NetやVB6.0等)はWindows7に対応していないので、Windows7に対応する言語で手直しをする事になります。
    もしWindows7に対応している言語で作成されているのであれば、まずは実行ファイルのプロパティにある互換性のタブからWindowsXPを選んだり、特権レベルを与えるなどして動作させてみては如何でしょう?もしこの設定変更で動作するのであれば、当面はそのまま使い続ける事が出来るかと思います。
    もしそれでも動作しないのであれば、Windows7に対応するように修正を加える事になります。ごく一般的なアプリケーションであれば、使用するフォルダの変更などで動作する可能性が高いと思います。


    甕星

    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 8:21
  • まずは以下について確認してみては如何でしょう。リンク先はASPについてのようですが、特に権限周りなどは共通の確認事項かと思います。 https://support.microsoft.com/kb/175168/ja?wa=wsignin1.0
    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 8:57
    モデレータ
  • 確実じゃない中で推測で書いてしまうのはあまりよくないのですが、そのプログラムを「管理者として実行」で起動した場合は正常に動くのでしょうか。
    (「管理者グループにいるアカウントで実行する」だけではなく、右クリックメニューから「管理者として実行」を選ぶと言うことです)

    これが正しいとすると、UAC について勉強していただき、今時のプログラムの作り方を学んでいただくことになります。
    たとえば、Program Files に書き換え対象のデータを置かず、Application Data などのユーザーが書き込める場所に置く、どうしてもすべてのユーザーで共通にしたいなら ProgramData に保存するなど。なお、パスは Environment.GetFolderPath で得る必要があります。

    • 回答の候補に設定 add1024 2015年2月12日 3:58
    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 9:50
    モデレータ
  • ファイルの書き込み権限の可能性が高いと思いますが、あとは、そのmdbが「読み取り専用」になっているかですね。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク goodwave 2019年6月26日 22:00
    2015年1月31日 11:29
    モデレータ