- PR -

リソース名の取得について

1
投稿者投稿内容
Hidering
常連さん
会議室デビュー日: 2007/05/22
投稿数: 33
投稿日時: 2007-08-22 18:28
お世話になります。
リソース名の取得について質問があります。
以下のように指定したファイルのリソース名を取得したいのですが、

Dim myAsm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(Fname)
Dim asnames As String()
asnames = myAsm.GetManifestResourceNames()

画像ファイルやアイコンが含まれているexeを対象にしても
asnames()には〜.bmpや〜.icoではなく、〜.resourcesという名称しか入ってきません。
正しく画像ファイルなどのリソース名を取得するにはどうすればよいのでしょうか?

ソースは下記サイトを参考にしました。
http://dobon.net/vb/dotnet/programing/bitmapresource.html

宜しくお願いします。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-08-23 16:51
画像ファイルのビルドアクションを "埋め込まれたリソース" に設定していますか?
もしかして、画像ファイルをリソースファイル(拡張子:resx)の項目の一つとして指定していませんか?
その場合、GetManifestResourceNamesメソッドでは取得できません。
_________________
C#と諸々
Hidering
常連さん
会議室デビュー日: 2007/05/22
投稿数: 33
投稿日時: 2007-08-24 09:45
よこけんさん。ご回答ありがとうございます。

リソースファイルが埋め込まれたリソースなので中の画像ファイルも
埋め込まれたリソースなのだと勘違いしていました。
別途プロジェクトに画像ファイルを追加し、埋め込まれたリソースとすることで
解決しました。ありがとうございます。

作業をしていてフォームの.resxファイル等が外部から参照できてしまうことに
気づきました。
逆に外部のプログラムからフォームのリソースファイル等を見えないようにするには
どうすればよいのでしょう?
フォームの.resxファイル等は全てビルドオプションが埋め込まれたリソースと
なっていますが、これをコンパイルとするとエラーがでてしまいます。

よろしくお願いします。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-08-24 14:02
リソースに限らず、ソースコードも全て外部から見えます。
.NET Framework 付属ツールの「MSIL 逆アセンブラ」や、フリーソフトである「Reflector」を使えば簡単に確認できます。
ソースコードは、Visual Studio 付属ツール「Dotfuscator」等を使って、逆コンパイルによる解析を難読化させることができるらしいです。(私は使ったことないです。)
Dotfuscatorでリソースまで難読化することができるのかどうかは、知らないです。(暗号化とかしないといけないだろうし、できなさそうな気もします。)
リソースを見られるわけにはいかない理由が特にないのでしたら、気にしなくていいと思いますよ。
どうしても、リソースを見られるわけにはいかない場合は、、、有識者の登場を待ちましょう^^;
_________________
C#と諸々
Hidering
常連さん
会議室デビュー日: 2007/05/22
投稿数: 33
投稿日時: 2007-08-25 18:12
よこけんさん。ご回答ありがとうございます。

引用:
リソースを見られるわけにはいかない理由が特にないのでしたら、気にしなくていいと思いますよ。


他のプログラムのリソースをみてもフォーム等の.resxファイルは参照できなかったので
質問させていただきましたが、通常みれてしまうようですし、
リソースを見られても困ることは特にないので、気にしないことにします。

ありがとうございました。
1

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