- PR -

ノータッチデプロイメントでのDLLの扱い

投稿者投稿内容
ranta
会議室デビュー日: 2004/05/11
投稿数: 11
お住まい・勤務地: 神奈川
投稿日時: 2004-05-11 18:57
はじめての投稿になります。
よろしくお願いします。

C# + OpenGLでノータッチデプロイメントを検討しています。
調べてみたところ、C# + OpenGLは初期化処理が上手くなく、
実際は、C# + CsGLでの検討になっています。
# CsGL
# http://csgl.sourceforge.net/

質問なのですが、ノータッチデプロイメントの場合、
DLLの参照は、動的に行わなければならないのでしょうか?
『参照設定』→『参照の追加』から行うとアクセスエラーとなり、上手く出来ません。
また、動的(System.Reflection.Assembly.LoadFrom(XXXXX))に行うと、
CsGLの関係上、DLL内のクラスを継承する必要がありこれも上手くありません。

静的にサーバ上に配置されたDLLを指定する方法が知りたいです。

どなたかご教授頂ければ幸いです。




Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-11 23:41
諸農です。

引用:

質問なのですが、ノータッチデプロイメントの場合、
DLLの参照は、動的に行わなければならないのでしょうか?
『参照設定』→『参照の追加』から行うとアクセスエラーとなり、上手く出来ません。


自作のWinForm用コントロールのアセンブリ(.dll)と
それを静的参照(?)で利用するプロジェクトで試してみました。
ローカルマシンだとセキュリティを意識せずに実行可能でした。
別のマシンからだとセキュリティの問題でコントロールはダウン
ロードされたものの、表示されませんでした。
例外はSystem.Security.Permissions.SecurityPermissionです。
ちなみにどのようなエラーが出ていますか?


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-12 08:39
引用:

Jubeiさんの書き込み (2004-05-11 23:41) より:

ローカルマシンだとセキュリティを意識せずに実行可能でした。
別のマシンからだとセキュリティの問題でコントロールはダウン
ロードされたものの、表示されませんでした。


 ???静的に参照したDLLですよね?どの部分で例外が発生していますか?
・外部ファイル(DLL)をダウンロード/参照するとき
・DLL中のクラスをインスタンス化するとき
・DLL中のクラスが、ローカル環境にアクセスしようとするとき
ranta
会議室デビュー日: 2004/05/11
投稿数: 11
お住まい・勤務地: 神奈川
投稿日時: 2004-05-12 09:18
jittaさん、jubeiさん返信ありがとう御座います。
SEIです。

静的・動的DLL参照。。
言葉に矛盾ありますが、他の言い回しが分からなかったもので。(汗)

引用:
--------------------------------------------------------------------------------


Jubeiさんの書き込み (2004-05-11 23:41) より:

ローカルマシンだとセキュリティを意識せずに実行可能でした。
別のマシンからだとセキュリティの問題でコントロールはダウン
ロードされたものの、表示されませんでした。

--------------------------------------------------------------------------------
同じ現象です。

発生している例外内容は以下の通りセキュリティ例外です。
System.Security.Policy.PolicyException: 必要なアクセス許可を取得できません。
at MDIDemo.MDIChild..ctor()
at MDIDemo.MDIParent.MDIParent_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

また、例外の発生個所は、DLL内のクラスを継承しており、
そのクラスのインスタンス生成時に発生しています。

お気付きの点が御座いましたら、ご指導お願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-12 09:39
 OnLineの方がFile Not Foundになるので、お手持ちのMSDNで、「検索」タブを開き、「フィルタ条件」をなしにしておいてから、「検索する文字列」に"Windows フォームのセキュリティに関するその他の考慮事項"を入れ、検索してください。このタイトルの記事を開いてください。

ここに
引用:

既定では、[イントラネット] ゾーンでは AllWindows アクセスが許可され、[インターネット] ゾーンでは SafeTopLevelWindows アクセスが許可されます。つまり、[インターネット] ゾーンでは、アプリケーションがほとんどのウィンドウ操作および UI 関連処理を実行できますが、ウィンドウの外観が変更されます。


とありました。MDIは作れない?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-12 09:41
引用:

静的にサーバ上に配置されたDLLを指定する方法が知りたいです。



ノータッチデプロイメントなアプリケーションには、ごく限られた操作しか許されていません。
P/Invoke もデフォルトでは禁止のずです。(できたらセキュリティの大穴)

各実行環境で、当該アプリケーション実行時のセキュリティ設定を甘くしてもらう以外に方法は無かったような気がします。

OpenGL ではなく、Managed DirectX なら、この手の問題は無かったかもしれないですね。(未確認)

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
ranta
会議室デビュー日: 2004/05/11
投稿数: 11
お住まい・勤務地: 神奈川
投稿日時: 2004-05-12 09:59
引用:
--------------------------------------------------------------------------------


各実行環境で、当該アプリケーション実行時のセキュリティ設定を甘くしてもらう以外に方法は無かったような気がします。

OpenGL ではなく、Managed DirectX なら、この手の問題は無かったかもしれないですね。(未確認)

--------------------------------------------------------------------------------

ゾーンセキュリティの信頼度を変更することにより、アクセス可能になりました。
結局、クライアント全てに手を加えることに変わりは無いのですね。。
イントラでの動作なら良いかもしれませんが、外部まで考えると微妙ですね。。
DirectXも含めて検討したいと思います。

Jittaさん、Jubeiさん、渋木宏明(ひどり)さん、本当にありがとう御座いました。
今後も宜しくお願い致します。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-12 12:47
諸農です。

引用:

 ???静的に参照したDLLですよね?どの部分で例外が発生していますか?
・外部ファイル(DLL)をダウンロード/参照するとき
・DLL中のクラスをインスタンス化するとき
・DLL中のクラスが、ローカル環境にアクセスしようとするとき


えっと、インスタンス化のところですね。
ローカル環境アクセスは無いはず。。
ん?P/InvokeでIME関数呼んでいるんですけど。。それが問題?

昨夜はサブマシンのノートのディスクがおかしくなったので、
何も調べずにほったらかしにしています。。(^_^;)

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/

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