2009-06-16 9 views
3

私はライセンスに疑問があります。私はC#アプリケーションを使用しています。 シナリオ: ユーザーは、ファイルの形式でメールを通じてアプリケーションのライセンスを取得します。彼/彼女はライセンスファイルをデスクトップに保存します。その後、ライセンスを選択して登録をクリックします。これで、アプリケーションが登録されました(ライセンス)。 数日後、ユーザーがDesktopからライセンスファイルを削除した場合。ファイルがないため、アプリケーションの動作が停止します。 レジストリまたはファイル(秘密パス)のどこかにライセンスの詳細を保存したいと思います。しかし、 そのユーザーアカウントにレジストリまたはファイルの読み取り/書き込み権限がない場合はどうなりますか? どちらが良い方法ですか?あなたは他の方法を知っていますか? 私はこのエリアでは初心者です。だから私を助けてください。ライセンスの詳細を保存する

ありがとうございます。

答えて

3

すべてのアプリケーションデータは、%appdata%ディレクトリに格納する必要があります。あなたは、C#を指定しているので

は、ここにフォルダを取得するためのコードです:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

次の場所にこの意志出力: XPでは:C:/ DocumentsとSettings/ユーザ名 /アプリケーションデータ/ Vista:C:/ Users/ユーザー名/AppData/Roaming

このディレクトリにアプリケーション用のフォルダを作成してそこにコピーすることをお勧めします。

+2

複数のユーザーが同じソフトウェアを使用することを計画している場合は、ライセンスを「すべてのユーザー」ディレクトリ(XPでは)に入れる必要があります。C:/ Documents and Settings/All Users/Application Data /。 – Dashogun

+1

つまりEnvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); –

0

「レジストリは、アプリケーションとシステムとのやりとりであり、アプリケーションとユーザーとのやり取りではありません」これが正しいかどうかは分かりません。私はレジストリにもユーザー情報を保存していましたが、これはもう使用しませんでした。設定をファイルに入れる方が良い方法です。シリアル番号のようなものを保管したい場合は、それらを暗号化することを忘れないでください。

0

この場合、特にライセンスの削除、追加、変更が可能な場合は、レジストリへの書き込みは避けてください。インストール後にライセンスがスワップアウトされたり、何らかの方法で変更されたりする場合は、ファイルに書き込むほうがよいでしょう。しかし、私は通常、デスクトップに重要なファイルやデータを書き込むことはお勧めしません。おそらく、アプリケーション自体のディレクトリに含まれているフォルダに書きます。それが必要な場合は、アプリケーションのインストールに含めます。

+0

ライセンスは、元の質問に基づいて、私が信じているファイルです。また、アプリケーションのインストールディレクトリに書き込むのは良い考えではありません。アプリケーションはユーザーのappdataディレクトリにのみ書き込む必要があるため、Vista/7ではUACのために書き込みアクセス権がありません。 –

2

マイクロソフトでは、Windows Vista: Application Certification and Compatibility documentの格納場所についていくつか提案しています。

[プログラム]が共有データ(CODEではなく)を変更している場合、[データ]は論理的にProgramDataフォルダに移動する必要があります。個別のDATAの場合は、ユーザープロファイルに移動できます。

ライセンスファイルを使用してProgramData \ CompanyNameフォルダに格納します。しかし、私たちのライセンスは、ユーザーごとではなく、マシン単位で提供されます。デフォルトでは、このフォルダはWindowsでは表示されませんが、UACによって保護されていません。

+0

まさに!そして上記のように、C#でアクセス可能です:Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); –

関連する問題