質問

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

事前に感謝します。

役に立ちましたか?

解決

すべてのアプリケーションデータは%appdata%ディレクトリに保存する必要があります。

C#を指定したため、フォルダーを取得するコードは次のとおりです。

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

これにより、次の場所に出力されます。 XPの場合:C:/ Documents and Settings / username / Application Data / Vistaの場合:C:/ Users / username / AppData / Roaming

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

他のヒント

Microsoftでは、 Windows Vista:アプリケーション認定および互換性ドキュメント

  

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

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

前に誰かが私に言ったように:"レジストリはアプリケーションとシステムの相互作用のためであり、アプリケーションとユーザーの相互作用のためではありません。"これが物事を見る正しい方法かどうかはわかりません。私はユーザー情報もレジストリに保存していましたが、もう保存していませんでした。ファイルに設定を入れる方が良い方法です。シリアル番号などを保存する場合は、忘れずに暗号化してください。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top