トップ回答者
【Visual Studio 2005】 LAN上のハードディスクで実行できない。

質問
-
Visual Studio 2005で社内用システムアプリケーションを制作しておりますが、エラーが出てしまい、解決方法を探しております。
開発環境:Visual Studio 2005 Professional Edition
DB:Microsoft Access
Release版を制作し、デスクトップ上にDBファイルやexeを置いて実行すると正常に動作しますが、
LAN上にあるハードディスクにexeやDBファイルを移し、実行するとエラーが出てしまいます。
①システム起動時(ログインフォーム表示時)のエラー
発行元:不明な発行元
となり、
.NETセキュリティ警告
が出ます。
②DBアクセス時のエラー
ログイン処理をする際、DB接続を行おうとすると、下記のようなエラーが起きて実行できません。
-----------エラー内容---------------------------
セキュリティポリシーで許可されていない操作をアプリケーションが実行しようとしました。必要なアクセス許可をこのアプリケーションに与えるには、システム管理者に連絡するか、Microsoft Framework 構成ツールを使用して下さい。
System.Security.Permissions.FileIOPermission, mscorlib
・・・・・(中略)・・・・・・
のアクセス要求に失敗しました。
-----------------------------------------------------
初心者なのでとんちんかんな質問をしておりましたら申し訳ありませんが、
①の解決方法として、「デジタル署名を手に入れる」方法で解決するのでしょうか?これはお金がかかってしまうのですが、もっといい方法はないでしょうか。
②これを解決する方法を探してみましたが、見つかりませんでした。
Microsoft Framework 構成ツールの使用する方法をどなたかご存じでしたら教えて下さい。
よろしくお願いいたします。
回答
-
エリにゃん さんからの引用 >そうであれば、「無視する」が一番コストの低い運用かと思います。
そうします!ありがとうございます。【解決】
類似のスレッドが別の掲示板でありました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=24200
先日はあのように回答してしまいましたが、「無視する」という選択肢は慣れによって、他の不正なプログラムもそのまま実行してしまうリスクを抱えるという指摘がありました。(上記スレッドにて)
このため、上記のスレッドにあるような、何らかの署名を入れることを勧めます。
すべての返信
-
エリにゃん さんからの引用 ①の解決方法として、「デジタル署名を手に入れる」方法で解決するのでしょうか?これはお金がかかってしまうのですが、もっといい方法はないでしょうか。
「いい方法」とは誰にとって良い方法なのですか?
一般ユーザに対して良い方法は、そのコードのが改ざんされていないこと、偽造されていないことを保証するデジタル署名をつけることだと思うのですが。
http://www.verisign.co.jp/codesign/objectsigning/index.html
エリにゃん さんからの引用 ②これを解決する方法を探してみましたが、見つかりませんでした。
Microsoft Framework 構成ツールの使用する方法をどなたかご存じでしたら教えて下さい。
分かりやすいかは別として、MSDNのページを貼っておきます。
http://msdn.microsoft.com/ja-jp/library/2bc0cxhc(VS.80).aspx
http://msdn.microsoft.com/ja-jp/library/ezf53bba(VS.80).aspx
http://www.microsoft.com/japan/msdn/net/general/faq111700.aspx#faq111700_security02
.NET 3.5 SP1で緩和されているという話もありますが、ソリューションとしては不適切かな。。。
ところで、そのDBファイルは他のPC、他のユーザと共有して使うものですか?
ローカルにインストールみたいな形になって良いなら、ClickOnce等で配布するのもありだとは思いますが。
-
Azuleanさま
回答いただき、ありがとうございます。
MSDNのページのリンクありがとうございます。解読に1~2日かかりそうですが、早速試してみます。
>「いい方法」とは誰にとって良い方法なのですか?
>一般ユーザに対して良い方法は、そのコードのが改ざんされていないこと、偽造されていないことを保証するデジタル署名をつけ
>ることだと思うのですが。
おっしゃるとおり、一般ユーザーに配布するものでしたら、デジタル署名を付ける方法でと思っていますが、
今回は、社内で制作して、社内で使用する小規模なシステムのため、出来るだけコストを抑えたいという狙いがあるのです。
>ところで、そのDBファイルは他のPC、他のユーザと共有して使うものですか?
>ローカルにインストールみたいな形になって良いなら、ClickOnce等で配布するのもありだとは思いますが。
LANに接続しているパソコン数台のどこからでもアクセス出来るようにしたいという要望で、
ただ、複数PCからの同時アクセスはないという設定で制作しています。(ちなみにLAN接続されているマシンはVistaとXPです。)
また、社内で使用している外付けハードディスクは、自動ミラーリング機能がついていて、データがおかしくなっても
元に戻せるという理由で、データの格納場所が指定されています。
おっしゃられている「ローカルにインストール」というのは、一台のPC内にDBとアプリケーションを置く方法でしょうか?
ClickOnceで配布してLANのハードディスクにのせることはできますか?
-
エリにゃん さんからの引用 今回は、社内で制作して、社内で使用する小規模なシステムのため、出来るだけコストを抑えたいという狙いがあるのです。
そうであれば、「無視する」が一番コストの低い運用かと思います。
エリにゃん さんからの引用 おっしゃられている「ローカルにインストール」というのは、一台のPC内にDBとアプリケーションを置く方法でしょうか?
ClickOnceで配布してLANのハードディスクにのせることはできますか?
ClickOnceのインストール先はローカルのハードディスクです。LANのハードディスクにインストールするわけではありません。(インストール先は基本的に指定できません)
インストーラをLANのハードディスクに置くイメージ近いと思います。
ClickOnceとはいえ、インストールが嫌だと言うのであれば、この手法は無理でしょう。
絶対にLANのハードディスクにexeを置きたいのであれば、実行する全てのPCでアクセス許可を設定するか、その制限が緩和された.NET Framework 3.5 SP1を適用するかといった手法しかないように思えます。
ところで、そのアプリはDBを更新して、かつ別のPCから更新されたDBを参照するのでしょうか?
-
-
-
エリにゃん さんからの引用 >そうであれば、「無視する」が一番コストの低い運用かと思います。
そうします!ありがとうございます。【解決】
類似のスレッドが別の掲示板でありました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=24200
先日はあのように回答してしまいましたが、「無視する」という選択肢は慣れによって、他の不正なプログラムもそのまま実行してしまうリスクを抱えるという指摘がありました。(上記スレッドにて)
このため、上記のスレッドにあるような、何らかの署名を入れることを勧めます。
-
たびたび書き込み下さり、ありがとうございます。
教えていただきましたスレッドを見ていて(以前Azulean様にも教えていただきましたことですが)、ふと気づいたのですが、
証明書をインストールしても証明書に対して実行するマシンでポリシー設定を必要とするならば、
ネットワーク上にexeを置く意味がないような気がしてきました。「ネットワーク上にexeを置く」=「接続されているどのマシンからもアクセスできる」という目的なのに、各マシンに設定が必要ならば、そのままexeを各マシンのローカルに置いた方が早いと思ったので。
紅の豚118 さんが提示されていた方法は、私には難しすぎたので、
DBのみをネットワーク上に置いて、ローカルにexeを置く方法に変えてみたら、①②の問題共、解決しました。
直接問題を解決したのでは、なくなってしまいましたが、
Azulean様、ありがとうございました。解決いたしました。
また、Azulean様、回答いただきました皆様、いろいろ勉強させていただき、ありがとうございました。
この場を借りましてお礼申し上げます。