ネットワーク上のEXEファイルの実行方法

解決


インプ  2006-06-01 05:36:41  No: 131660

はじめまして

どーやってもエラーになってしまうので質問させてください。

題名通りにネットワークドライブ上にあるEXEを実行するとエラーになってしまいます。

エラー内容
'System.Security.SecurityException' のハンドルされていない例外が system.windows.forms.dll で発生しました。

追加情報 : 種類 System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 のアクセス許可の要求に失敗しました。

ネットワークドライブは正確にはマシンに割り当てを行っていません。
\\サーバ名\ディレクトリ名$と隠しフォルダになっているのを手動で開いて
そのフォルダ内にあるEXEの実行です。
隠しフォルダを開く際にID,パスワードはありません。

EXEはコマンドプロンプトのRUNASコマンドを実行するEXEになっています。
実行はDomainAdmins権限ユーザです。ローカル上でEXEを実行すると動くことも確認できています。

どなたかわかる方はいらっしゃらないでしょうか??


魔界の仮面弁士  2006-06-01 05:43:43  No: 131661

既定のセキュリティ設定では、そのような動作となります。

変更したい場合は、(NTFS の権限ではなく).NET 側の権限設定を確認してください。
コントロールパネルの管理ツールに、「.NET Framework 〜」なる項目があります。


インプ  2006-06-01 19:08:37  No: 131662

>魔界の仮面弁士さん

申し訳ございません
もう少し詳しく教えていただけないでしょうか?


魔界の仮面弁士  2006-06-01 21:05:07  No: 131663

まず、
>> コントロールパネルの管理ツールに、「.NET Framework 〜」なる項目があります。
の項目は見つけられましたでしょうか。1.1 や 2.0 のバージョンに対して、
構成/ウィザード(環境によっては、Configuration/Wizards)というアイコンが
あるかと思いますので、それらを確認してください。

構成(Configuration)というのが、.NET のコードに対するアクセス許可のリストであり、
ウィザード(Wizards)は、それを簡易設定するためのユーティリティです。

> もう少し詳しく教えていただけないでしょうか?
http://msdn.microsoft.com/library/ja/cpguide/html/cpconcodeaccesspermissions.asp

上記の表をごらんになった事はありますか? もしもご存じなければ、
『コード アクセス セキュリティ』『ロール ベース セキュリティ』という
キーワードで、MSDN や Web を検索してみてください。
この件に関する、具体的な情報が見つかるかと思います。

.NET のアプリが実行される際には、それぞれのexe(というかアセンブリ)を識別するため、
 * どこにあるアセンブリなのか?
 * 厳密名(Strong Name)は?
 * 発行者(デジタル署名)は?
などが確認されます。これらをエビデンス(証拠)と呼びます。

そしてそのエビンデンスに対して、コードのアクセス許可を制御するための
 1. Enterpriseレベル(特定のActive Directory環境に所属するPC群)
 2. Machineレベル(特定PCの全ユーザー)
 3. Userレベル(特定PCの特定ユーザー)
 4. AppDomainレベル(特定のアプリケーション)
という、4つの「ポリシーレベル」が存在します。そしてこれらはさらに、
階層構造からなる、固有の『コード グループ セット』という権限リストを含んでおり、
その権限リストの和集合が、コードに対する許可セットとなります。

初期設定では、上記 4 つのポリシーのうち "Enterprise" および "User" レベルは、
すべてのコードを完全信頼するコードグループ「All Code」のみを所有しています。
そのため通常は、この部分で制限がかかる事はありません。
また、"AppDomain" レベルは、実行時にコードから設定するものなので、単純に実行するだけなら、
これも有効とはなりません。

結果、初期設定の状態で制限がかかるのは、"Machine" レベルのポリシーに対してです。
Machine レベルのポリシーには、ゾーン別(ローカル/LAN上/信頼サイト/制限サイト/インターネット)の
グループセットが割り当てられています。そしてこのゾーン別の設定こそが、
>> 既定のセキュリティ設定では、そのような動作となります。
に関わってくる部分という事です。

参考資料:

[.NET Framework アプリケーションを配置してネットワークから実行する方法]
http://support.microsoft.com/kb/832742

[.NET Framework のセキュリティ設定を構成する方法および .NET Framework アプリケーションを展開する方法]
http://support.microsoft.com/kb/837909

[コードアクセスセキュリティの仕組みと設定方法]
http://codezine.jp/a/article.aspx?aid=361

[300 秒でズバリ!! : コードアクセスセキュリティの活用]
http://www.microsoft.com/japan/seminar/msdn/300sec/codeaccesssecurity/default.mspx

[インサイド .NET Framework] … コード・アクセス・セキュリティ
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html


インプ  2006-06-02 02:50:45  No: 131664

>魔界の仮面弁士さん

色々とありがとうございました。
読んだことの無いサイトもあり、参考になりました。

原因なのですが
コードグループの追加は行っていたのですが、実行ファイルの場所を
『\\サーバ名\フォルダ名1\フォルダ名2\ファイル名』と指定していたのにも関わらず、テスト環境で『\\サーバ名\フォルダ名1』をネットワークドライブに割り当てていました。そのため実際には『Z:\フォルダ名2\ファイル名』を実行しているのが原因でした。

ネットワークドライブを切断してファイル名を指定して実行より
『\\サーバ名\フォルダ名1\フォルダ名2\ファイル名』を実行したところ正常に動くことが確認できました。

どちらも同じ場所を指しているにもかかわらずダメなんですね〜

物凄く丁寧に教えていただき、とても感謝しております。
自分の勉強にもなりました。

本当に、有り難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加