Windowsは複数ユーザからのログインをサポートしています。
しかし、現在作成しているソフトは(商業的な)セキュリティの都合上、最初にインストールしたログインユーザの操作以外は
アンインストール以外の操作を拒否したいと考えています。
※2人目からのインストール操作も拒否します。
このような実装をするには、どの様な設計にすればいいのでしょうか?
参考になるURLだけでも構いません。
よろしくお願いいたします。
なお、OSはWindowsXP SP2 + .NET Framework 3.5以降とします。
Vista/ 2008 / 7(と各64bit版)も含みます。
役に立つ情報かわかりませんが少し調べてみました。 ClickOnceのインストール/アンインストール処理の前後に独自の処理を追加できないので レジストリの登録は実行時にする必要があります。ClickOnce の配置で HKEY_LOCAL_MACHINE (HKLM) にアクセスするには、完全信頼(Full Trust)アクセスの許可が必要です。 また実行時に登録したレジストリはアンインストール時に削除できないので ゴミとして残るという問題が発生します。 >>なお私が今考えているのは、レジストリに最初に起動させたユーザ名を記入して >>他のユーザが起動した場合には、レジストリと比較して拒否する方法を考えています。 同じPCでライセンスを2つ購入して使用することも考えられるので ユーザごとにライセンスの有無を判定する必要があります。 オンラインでバージョンの管理を行うのでしたらユーザの管理もオンラインにしてしまえばいいのでは? ClickOnce の配置を管理する http://msdn.microsoft.com/ja-jp/library/aa480721.aspx#adminc_topic5 >>* HTTP(S) を介した Windows 認証 >>* アプリケーションに設計されたカスタム認証 >>* アプリケーション起動時のクエリ文字列パラメータの使用 >>(インストールされたアプリケーションの埋め込みユーザー資格情報を使用した動的なマニフェスト生成が必要) >>* カスタム クライアント プロキシとカスタム HTTP モジュールの認証 第6回 ClickOnceの運用を成功させる5つのポイント http://www.atmarkit.co.jp/fdotnet/clickonce/clickonce06/clickonce06_01.html
プロダクトアクティベーションはいかがでしょうか?
ソフト本体だけでなく、認証用の外部HTTPサーバーと通信させて認証させる方法です。
このようなサービスもあるようですが、細かく制御したいのであれば、自前で(ホスト側、クライアント側を)実装する必要があると思います。
他のユーザが起動した場合には、レジストリと比較して拒否する方法を考えています。
しかし、オンラインでバージョンアップできるようにClickOnceでの配布を予定していますが
そうするとインストールの時点で拒否するということは実装できないのかな?と想像しています。
よろしくお願いいたします。