[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/06 11:55 / Filesize : 186 KB / Number-of Response : 863
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part59



1 名前:デフォルトの名無しさん [2010/05/16(日) 23:13:52 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ 
C#, C♯, C#相談室 Part58
pc12.2ch.net/test/read.cgi/tech/1269261310/

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい

684 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:09:18 ]
署名は改ざん検知出来るだけ
DLLのアクセス制限云々の機能ではない

685 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:29:04 ]
やっぱりそうなんですね
がっくし・・・・
ProjectA ---{OK}--- A.dll
第三者のProject ---{NG}--- A.dll
みたいな事をやりたい時はみんなどうしてるのん?

686 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:32:12 ]
そんなことをやりたいと思ったことがない。

687 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:35:14 ]
えー社内ライブラリとかどう管理してるのー?
不正リンクされて盗まれても「でへへっ!」とか言うだけ?
うそーん><

688 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:38:50 ]
>>685
DLLのファイルかフォルダにNTFSのアクセス権つければよくね?

689 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:47:26 ]
制限出来れば
リフレクション使ってクラス調査→不正リンク→(゚∀゚ )アヒャヒャ
という.net固有の糞みたいな問題が解決するけど
未だに対策は難読化しかない。

690 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:53:51 ]
別になぁ。そもそもアセンブリじゃないDLLなら呼び放題だし。
売り物ならライセンス処理つけるだろうし。
お買い上げありがとうございました。だろ?

691 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:55:50 ]
オープンソース時代だから別にいいじゃんw
盗まれたら裁判すればいいし(キリッ

692 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 19:58:48 ]
>>691
盗んだほうはC++で書きましたってオチだ



693 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:08:44 ]
.NETでなくても、製品の実行ファイルや図版を勝手に使われたらどうするんだよ。
そういうときは法務部門や顧問弁護士の出番。

694 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:18:14 ]
まっ、やり放題な業種だからどうしようもないってこった
裁判なんざ普通は起こせないしそもそも把握すること事態が不可能

695 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:47:43 ]
ヤリ放題な業種だと自分に言い聞かせてるのか?こっちまで巻き込むなよ。

696 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:50:51 ]
巻き込むも何も対策方法が何もない現状
自作パッカー作ったところで焼け石に水
理想は寝て言え

697 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 20:50:51 ]
>>683
どのアセンブリからコールされているかはわかるだろ。
そして、そのアセンブリがどのような署名されているかを調べる。
逆コンパイル防止はそれ以前の問題。

698 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:05:35 ]
毎回、毎回、クラス毎に調べるのか?
手間かかりすぎだろ

699 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:07:48 ]
いたるところで StrongNameIdentityPermission でDemandでもしとけ。
まあ改ざんされたらもうだめだけどな。


700 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:45:18 ]
単純に
public class MyLicence : License {
public override void Dispose() {}
public override string LicenseKey { get { return ""; } }
}
public class MyLicenceProvider : LicenseProvider {
public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions) {
if (allowExceptions) {
string exename = Path.GetFileName(Assembly.GetEntryAssembly().Location);
if (! exename.Equals("MyLicenceTest.exe")) {
throw new LicenseException(type, instance, "do't licenced");
}
}
return new MyLicence();
}
}
[LicenseProvider(typeof(MyLicenceProvider))]
public class TestClass {
License license;
public TestClass() {
license = LicenseManager.Validate(typeof(TestClass), this);
}
}
とかでもいいんじゃね?呼び出し元exe名縛り。

701 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:54:35 ]
こんな抽象クラスあったのか。
中々面白いアプローチだと思う。

702 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:59:05 ]
ほぉ、これはなかなか…



703 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:05:48 ]
>>701-702
そりゃどうも。えっへん!

704 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:06:08 ]
Licenseは破棄が必要だぜ…


705 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:07:59 ]
と思ったけど必要なければ別に実害はないのか…


706 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:10:53 ]
リソース持ってないし、いいかな?と省略したけど、実装する際は通常通り
Dispose()しといたほうがいいだろね。

707 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:14:16 ]
リソースというか取得したライセンスを開放する処理を好きに定義するだけでしょ
同時利用数をデクリメントするとか
空でも全く問題ない

708 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:20:59 ]
ってことみたいね。


709 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 22:48:04 ]
というか、キモはexeのファイル名を確認するところなんだから、実装の仕方は人それぞれでしょう。

710 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:10:48 ]
ってことみたいね。

711 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:30:09 ]
>>700をoverrideとか使わずにもっと分かり易く書いてくれ

712 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:33:20 ]
webアプリで
FileSecurity filesecurity = File.GetAccessControl(path);
(pathはstring型でファイルの絶対パスが代入されています)
としました。
このファイルを他のアカウントで作成して、
アクセス権限も拒否にしたら、デバッグ環境でですが、

'/'アプリケーションサーバーエラーが発生しました。

と出て、実行できませんでした。
とりあえず、try catchを使い、アクセス禁止として
処理すれば、実行エラーは回避できました。
DACLとかいまいちわかっていないのですが、
なにか他の回避方法はあるでしょうか?
よろしくお願いします。



713 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 23:33:38 ]
そんなレベルだったら余計なこと気にするな
どうせその他の部分で穴だらけ

714 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 00:00:25 ]
>>711
public class Hoge
{
  private Hoge() {}

  public static Hoge()
  {
    string exename = Path.GetFileName(Assembly.GetEntryAssembly().Location);
    if (exename != "hoge.exe")
      throw new Exception();

    return new Hoge();
  }
}

でも、リフレクションやLCGを使われたらどうなるの?

715 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 00:27:30 ]
LicenseProviderって使ったことなかったからそのサンプルコードとしては
参考になったけど、正直実用的な意味があるとは思えんなあ…

アセンブリがロードされた時に何らかのスタティックメソッドの実行を強制できれば
いろいろ面白いことが出来そうな気がするんだけど

716 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 00:43:56 ]
そうそう、今回の話とは別に、それ前からほしかったんだよね。


717 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 01:26:14 ]
実用的には例えばSIDとかMACとかUSBメディアのPNPDeviceIDとか
※ SID : GetComputerName、LookupAccountName API参照
※ MAC : NetworkInterface.GetPhysicalAddress 参照
※ PNPDeviceID : WMI で Win32_DiskDrive, Win32_DiskDriveToDiskPartition, Win32_LogicalDiskToPartition, Win32_LogicalDisk 参照
そういった利用者を一意に特定出来る情報をプロダクトキーと一緒に公開鍵で
暗号化してライセンス認証サーバに送って、サーバで認証後に秘密鍵で
特定情報を暗号化して送り返してもらったものを記録。
その情報を公開鍵で復号して動作環境での取得値と一致していなかったら
ライセンス違反と判断・・・とかメンドクサい実装は必要に応じて。

718 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 01:53:37 ]
うんまあ改ざんされたら意味ないんだけどね。


719 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 02:49:16 ]
それを言ったらどんなアプリ、ExcelだろうとWindowsOSだろうと、リエンジニアリング
されてライセンス処理部を改ざんされたら無理。
それを言うことに意味はあるのかな?

720 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 03:02:30 ]
簡単さが違うって話。


721 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 05:35:33 ]
確かにDllMain的なのは欲しいよな。

722 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 11:42:56 ]
static イニシャライザでチェックしちゃいかんの?



723 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 11:47:55 ]
staticコンストラクタはいつ呼ばれるかわからない

724 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:00:08 ]
アセンブリに属性をつけておいて
その属性にstaticコンストラクタを仕込んでおけば
dllを読みこんだタイミングで実行されたりしないかなあ

725 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:00:32 ]
ふーん

726 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:08:28 ]
>>724
されない
カスタム属性っていうのはあくまでメターデータのラッパークラスなので
インスタンスが作られるのはその属性を参照しようとしたとき

727 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:26:53 ]
お前ら釣り耐性低すぎだろ

728 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 12:32:24 ]
>>726
(゚∀゚)

729 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 18:55:14 ]
>>700みて何じゃこりゃとおもったけど>>714見たら恐ろしく単純w

730 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 19:30:28 ]
何十個もクラスをライセンス管理しないなら >>714 で充分だね。

731 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 19:53:32 ]
>>729
遅い

732 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 21:27:20 ]
>>700でも充分簡単じゃねぇか。
あんなのすら分からなかったらそもそもコードかけねぇだろ。



733 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 21:46:45 ]
>>732
インデントの差だろ

734 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 22:42:20 ]
まあ確実に言えることは、>>700 程度のコードが複雑に見えるんじゃライセンス保護
なんて当分は無縁だということ。

735 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 22:50:21 ]
>>733
専ブラで>>700をポップアップさせて見ればいい

736 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 00:53:37 ]
うほ

737 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 10:19:51 ]
先生!
thread.spinwaitとthread.sleepってどう違うんですかっ?
MSDN読んでも引数の違いぐらいしかわからないです!
高度な技術を持ってる人、おすえて!

738 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 10:31:49 ]
解説読めよ。

739 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 11:41:25 ]
>>738
わかりません!

740 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:04:49 ]
Windowsフォームアプリを作るとメインウィンドウのクラスがめっちゃ大きくなっちゃうんですが、仕方ないんでしょうか?
それともpartialで分割するべきですか?(あまり意味ないと思いますが)

741 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:11:42 ]
partialの分割は意味ない。
ユーザーコントロールにするとか、ビジネスロジックを別クラスにするとか、
そんな感じ。

742 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:49:35 ]
ApplicationContext使って、MainFormにはインタフェースレベルのプログラムしか書かないとかかな。



743 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 20:37:11 ]
それでもコントロールの量が多いとイベントメソッドだけでもめっちゃ多くなっちゃうんですよね。
そこそこ普通のフリーツールくらいの規模でもメインウィンドウのクラスだけで何千行にもなっちゃう。

744 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 20:40:43 ]
だから、そーゆーのはユーザーコントロールにまとめるんだってば。

745 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 20:43:21 ]
で、デザイナがバグって正常に表示されない、とw
あれたぶん2010でも放置なんだろうな

746 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 21:11:27 ]
>>743 >>745
へったくそだなぁ

747 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 21:12:31 ]
ユーザーコントロールが正常に動かないのは作り方が悪い

748 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 21:29:20 ]
>>746
具体的に教えてよ

749 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:12:54 ]
なんでそんなでかくなるんだろ。
イベントが盛りだくさんなの?

750 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:17:36 ]
ボタンが百個あるので、イベントハンドラが百個なんでしょ。

751 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 22:28:16 ]
ボタン1個にいくつのイベントがあると思ってんだ

752 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:05:11 ]
はなし が かみあって ない



753 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:35:24 ]
やっぱへったくそだな

754 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:50:20 ]
>>746-747
素人臭い意見だな。
そんなわけないでしょw

実際ある程度やってみれば俺の言ってる意味がわかるよ。

755 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 23:54:22 ]
自称玄人△

756 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:07:04 ]
>>754
ユーザーコントロール使ったこともない自称玄人乙

757 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:12:58 ]
IDEに表示されないという理由だけでユーザコントロールを避けるってどうなの?
#define BEGIN {
と同じくらいひどいと思うんだけど、素人だからですかね

758 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:15:09 ]
それは言いすぎ。
IDEのコード生成は信用できないので禁止、くらいだろ。

759 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:24:31 ]
・・・IDEに出ない?ツールボックスに出てきているコレはなんだろう?

760 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:29:02 ]
>>757
「だから」避けろとか使うべきでない、などとは一言も言ってない。

761 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:31:03 ]
揚げ足取り玄人ですね。かっこいいです!

762 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:34:15 ]
>>760
デザイナがバグって正常に表示されないというのは素人がよくハマる部分だから
気をつけろって言う意味?



763 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:36:18 ]
ガキ臭い揚げ足取りしてるのはどっちだよ。
ネトウヨみたいなよくわからん被害妄想だなおい。

こっちは単にVSのデザイナはユーザーコントロールを使うとバグって
正常に表示されなくなる場合がある、という事実を言ってるだけ。

っていうか、この程度の経験もない奴が偉そうに「ユーザーコントロール使え」
とか人に講釈垂れてるっていい根性してるよな。

764 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:40:46 ]
>>762
VS自体のバグだから使う側が玄人か素人か関係ないし、
気をつけようもないんだけどさだから。

765 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 01:53:37 ]
該当バグのURL晒したらすぐ済むことなのに

766 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 02:11:16 ]
VS2008でデザイナがしょっちゅう腐ることがあるやつを
VS2010に持ってきたが、いまのとこ一度も腐ってない

767 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 02:36:55 ]
2002や2003に比べたら2008の安定ぷりったらないんだけど、2010はさらに調子良いのか
これは楽しみ

768 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 03:24:29 ]
コントロール多くてもほとんどユーザーコントロールだから、フォーム側に実装する事ほとんど無いなぁ。
そんなにフォーム固有の処理って多いもん?

769 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 03:50:48 ]
>>768
ユーザコントロール作ったらバグるって言われるよ

770 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:23:34 ]
ボタンにクリックイベント一個付けるだけでもわざわざ一個のユーザーコントロール作るの?

771 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:25:56 ]
そうすべきだと思ったらそうするな

772 名前:デフォルトの名無しさん [2010/06/22(火) 04:29:59 ]
>>770
ボタンコントロールにだけ関連する処理ならユーザーコントロールか
継承したクラス作ってそこへ入れてしまえばいいんじゃね?

Formにだらだら書くよりすっきりするよ



773 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:35:29 ]
継承したらそりゃコードは分割出来るけど
デザイナの意味を成さなくなってくるな

774 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:40:23 ]
Visual Studioの登場で、内部はどんどん複雑に、表面は簡単になったおかげで
基本や構造を理解せずに何となくソフトを作るプログラマーが増えた

マシンパワーが有り余ってるから、いいかげんな作りのソフトでもそれなりに動いてしまうのも善し悪し

775 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 05:00:27 ]
>>773
もう少し詳しく。
適当に予想してレスすると怒られる流れっぽいので。

776 名前:デフォルトの名無しさん [2010/06/22(火) 05:11:51 ]
>>773
成すよ
まあこのあたりみてくれ
cs2ch.blog123.fc2.com/blog-entry-8.html

777 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 05:33:54 ]
>>775
イベント追加する時に+=を書かなくちゃいけなくなるとか

778 名前:デフォルトの名無しさん [2010/06/22(火) 05:35:24 ]
>>777
hoge.Click +=
とか書いてTAB2回押せば勝手につくってくれるじゃん

779 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 05:47:02 ]
>>778
プロパティのイベントを選べないじゃん

780 名前:デフォルトの名無しさん [2010/06/22(火) 05:54:13 ]
>>779
だからその辺は>>776読めって
一旦デバックすれば継承したクラスも同じように操作できるから
それができないとFormを継承したForm1の設定はどうやって実現するんだよ
普段コードをごりごり書いてるのはFormを継承したクラスだぞ

781 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 06:01:54 ]
>>780
MainFormのデザイナから継承させたコントロールのイベントを
プロパティウィンドウからメソッド生成させると
結局MainFormのクラス内にメソッドが追加されないか?
これじゃ分割出来てないんだが

782 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 10:25:36 ]
ボタン100個あって、100個クリックイベントを書くのは愚の骨頂だろ。
インタフェースの仕事としては、どのボタンがクリックされたかを伝えるだけで良いんだからさ。

それ以上に、動かす用途によって書き方は変わると思うんだが。



783 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 11:17:47 ]
100個あるボタンそれぞれが全く別の処理を行うというのは考えづらい
ツールボタン的なものや、データ行それぞれに対するコマンドあたりだろうけど
そういうのは共通の入り口から振り分けられる

784 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 12:30:02 ]
だね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<186KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef