@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

System.Security.SecurityExceptionエラー

1
投稿者投稿内容
mina
会議室デビュー日: 2004/09/15
投稿数: 17
投稿日時: 2004-09-18 15:59
お世話になります。
---------------------------------------------------------
[OS]WindowsXp SP1
[VS]VisualStudio.NET2003+スマートクライアント
  WindowsフォームとExcel2003を使用
[言語]VB.NET
---------------------------------------------------------
上記環境にて開発を行っております。

Excel上に配置したボタンを押下してWindowsフォームを開こうとしているのですが、
フォームのインスタンス化する際に下記のエラーで処理が終了します。
「実行時例外がスローされました:System.Security.SecurityException - 要求が失敗しました。」
エラー箇所:
Windowsフォームデザイナで生成されたコード内
Public Sub New()
  MyBase.New()
  InitializeComponent()  ←ココ
End Sub

処理も特にエラーメッセージとして表示されるわけではなく、
上記エラーもラインデバッグ中にInitializeComponent()にカーソルがきた際、
コマンドウィンドウにて単純に「? InitializeComponent」とすると
表示されたものです。
エラーなら何かメッセージが表示されてSTOPしてほしいのですが、、、
エラーなのに何も表示せずに終了するのかこの原因もわかりません。
InitializeComponent()内の処理にもとびません。
このプロシージャを呼ぼうとした時点にエラーとなっているようです。

最初はコードアクセスセキュリティとかのセキュリィ関係かと思ったのですが、
Windowsフォーム上に配置したボタンを押下して
このエラーが発生するWindowsフォームを開く処理を検証してみると
上記のようなことは起こらず、正常に動作しました。

呼び元がExcelかWindowsフォームかだけで、
間の処理はすべて同じクラスを使用してみました。
このあたりに何か原因があるのでしょうか?

ご教授よろしくお願い致します。
mina
会議室デビュー日: 2004/09/15
投稿数: 17
投稿日時: 2004-09-18 17:20
追記です。

例外エラーがエラーメッセージを表示せずに終了していたのは、
VSのツール「デバッグ」−「例外」にて、例外がスローされたときの設定が
『継続』になっていたためでした。
お騒がせしました。

それを『デバッガで中断』に変更してプログラムを実行した場合の
エラーメッセージは以下です。

「System.Security.SecurityExceptionの初回例外がXXX.dllで発生しました。
 追加情報:要求が失敗しました。」

XXX.dllは現在実行中のExcelプロジェクトアセンブリ名です。

よろしくお願いします。
mina
会議室デビュー日: 2004/09/15
投稿数: 17
投稿日時: 2004-09-18 18:04
何度も申し訳ないです。
上記エラーを訂正します。

実行:
「System.Security.SecurityExceptionの初回例外がmscorlib.dllで発生しました。
 追加情報:要求が失敗しました。」
継続ボタン押下
「System.Security.SecurityExceptionの初回例外がXXX.dllで発生しました。
 追加情報:要求が失敗しました。」 (上記投稿エラー)
継続ボタン押下
「System.Reflection.TargetInvocationExceptionの初回例外が不明なモジュールです。で発生しました。
 追加情報:呼び出しのターゲットが例外をスローしました。」
継続ボタン押下
処理続行

という具合です。

ちなみに1度目の投稿で、成功したWinフォームからWinフォームへの呼び出しは
プロジェクトがexeになり、今回失敗したExcelからWinフォームへの呼び出しは
プロジェクトがdllとなります。
ともに1つのプロジェクト内で構成されています。

よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-09-19 16:03
dcomcnfgで、excelオブジェクトに実行権を与えていますか?

コンポーネントサービス
 コンピュータ
  マイコンピュータ
   DCOMの構成
    Microsoft Excel アプリケーション
mina
会議室デビュー日: 2004/09/15
投稿数: 17
投稿日時: 2004-09-21 10:17
Jitta様

回答ありがとうございます。
返答遅くなり申し訳ないです。

>dcomcnfgで、excelオブジェクトに実行権を与えていますか?
すみません。
どのような実行権を与えればよろしいのでしょうか?

指示のあるMicrosoft Excel アプリケーションのプロパティを見てみました。
[場所]「このコンピュータでアプリケーションを実行する」 のみチェック
[セキュリティ]起動許可/規定、アクセス許可/規定、
       権限の構成/カスタマイズ・・・編集 各登録ユーザーのアクセス許可、フルコントロール
[エンドポイント]既定のシステムプロトコル
[ID]起動したユーザー
以上のような設定になっておりました。

よろしくお願い致します。
mina
会議室デビュー日: 2004/09/15
投稿数: 17
投稿日時: 2004-09-21 17:56
自己レスです。

コードアクセスセキュリティの設定で、
.NET Configuration 1.1
---マイコンピュータ
------ランタイムセキュリティポリシー
---------コンピュータ
------------コードグループ
---------------All_Code
------------------My_Computer_Zone
のアクセス許可セットをFullTrustに設定したところ上記のエラーは回避できました。

そこで、このような設定をしないといけないのか。
また、このような設定をしてはいけなかったのか。
そのあたりがよくわかりません。
どなたかご教授よろしくお願い致します。

ちなみにLocal_intranet_Zoneの設定や
ユーザーのコードグループにおいて実行OfficeExcel_binの設定は
規定値のままです。
mina
会議室デビュー日: 2004/09/15
投稿数: 17
投稿日時: 2004-09-21 20:11
本当に何度も申し訳ないです!!

パニック状態で書くものではありませんね。
きちんと整理してから書いていきたいと思います。

原因がわかりました。
エラーがSystem.Security.SecurityExceptionエラーなので
すっかりセキュリティ絡みだと考えていましたが、実はそうではなかったようですね。
開こうとしていたフォームにはMSHFrexGridコントロールが
張り付いていたので、コードセキュリティの設定を変更したと同時にそれを削除していました。

今もう1度コントロールを貼り付けて実行したところ、上記エラーが発生しました。

やはりMSHFrexGridコントロールは使用しない方がよさそうですね。
でもWinフォームからWinフォームを開く場合はMSHFrexGridコントロールが張り付いてても
問題なく開いたのですが・・・。
ExcelからWinフォームを開く場合はだめというのはなぜでしょう・・・。

皆様、ひとりでレスしてお騒がせしてほんとに申し訳ありませんでした!
1

スキルアップ/キャリアアップ(JOB@IT)