34356
Windows Formアプリケーション(.Net C#)をwindowsパソコンにインストールして利用して頂く際に  
ライセンス管理をしたいと考えています。

アプリケーションの仕様  
･windows 7/8/10上での動作を想定  
･windowsサーバに接続してアプリケーションで利用するデータを取得する。(WCFを検討）

ライセンス管理方法案  
･インストールできる台数を制限する。  
･サーバに同時接続できるアプリ数を制限する。  
･ClickOnceのテクノロジーでダウンロード数の制限をかける。

サーバで管理する、ローカルで制御するなど方法はいろいろあるかと存じますが、  
何か良い方法をご存知の方がおりましたら、  
参考URL等の情報でも構いませんのでご教示頂きたく、よろしくお願いいたします。
CC BY-SA 3.0
2017-03-29T09:52:58.873
33635
2017-04-28T12:20:56.267
2017-03-30T09:09:49.553
9228
9228
question
c#
Windows Formアプリケーション(C#)のライセンス管理で良い方法はありますか？
ライセンス管理するということは、ライセンス対価、つまり課金処理と連動すると思うのですが。しかし、質問はライセンスに終始している点が気になります。

課金体系を設計すれば、自ずとライセンス管理も定まりませんか？ （クライアントインストール数なのか同時接続数なのか等）
CC BY-SA 3.0
2017-03-30T09:23:02.767
33654
2017-03-30T09:23:02.767
4236
33635
answer
お目汚しでございますが(実績に基づいた回答はできていません)、メモ程度の内容を記載します。実際に利用するには追加調査等が必要です。

ライセンス管理について:  
資料を見かけた程度の情報しかありませんが、.NET Framework が提供するLicenseManagerというクラスがあるようです。  
そのほかの解決策として、あまり高額ではないソフトウェアでファイルベースのライセンス認証を行うコードなどが以下のサイトにありました。ライセンスファイルをWCFを利用してネットワーク経由で取得するというのも良いでしょう。  
<https://stackoverflow.com/questions/3624149/license-for-c-sharp-desktop-
application>

同時利用制限について:  
利用時の制限については、WCFで可能のように思います。注意点としては同時接続数の管理や、セキュリティを適用する(不特定多数からのアクセス)場合、公的証明機関から証明書の取得が必須になることです。  
オフラインで同時利用制限を課したい場合は、ライセンスサーバーを準備させるか、ハードウェアキーでの制限が考えられます。

ライセンス回避の対策:  
ソフトウェアという資源のため、ライセンス認証を回避されることがあります(逆アセンブル等をされやすい)。費用が掛かりますがハードウェアキーを利用する等の対策をとることも可能です。  
一般的には難読化や、ネイティブコードへの変換が考えられます。併せて、複数のDLLから成るソフトウエアであるのならば署名を追加することでDLL入れ替えを防ぐことは可能と考えています(このときアセンブリバージョンの変更は要注意)。
CC BY-SA 3.0
2017-04-28T12:20:56.267
34356
2017-04-28T12:20:56.267
2017-05-23T12:38:55.307
-1
882
33635
answer