私はVB6で書かれたソフトウェア製品を持っています。これは有料のソフトウェア製品であり、1か月間のデモバージョンがあります。デモバージョン用の個別のセットアップファイルはありません。プロダクトキーを入力すると、ソフトウェアがデモをフルバージョンに変換します。以前はレジストリに情報を書き込んで追跡していました。デモ版の1か月以降、ソフトウェアは動作しなくなります。また、Windowsユーザーが管理者でない場合、レジストリをHKLMに書き込むことはできません。レジストリをHKCUに書き込むと、ユーザーは新しいユーザーを作成し、インストールすることでソフトウェアを再利用できます。では、デモバージョンを1か月に管理し、ユーザーがキーを購入せずに1か月後に使用できないようにするにはどうすればよいですか?
4 に答える
ライセンス キー ファイルを作成し、.exe ファイルと一緒に保存する必要があると思いました。何らかの方法で暗号化する必要があり、いつ作成されたか、どのマシンで作成されたかなどの詳細を保持する必要があります。おそらくそれを回避できますが、要件に対して十分に堅牢であることは間違いありません.
ユーザーがデモを再開するために新しいユーザー アカウントを作成することが心配な場合は、グローバルな場所に書き込む必要があります。セットアップ時に適切な場所を設定すれば、HKLM に標準で書き込むことができます。
ユーザーが 30 日ごとに新しいユーザー アカウントを作成できる、または作成する意思がある場合、レジストリ エントリによってユーザー アカウントが停止されることはありません。
中央アクティベーション サービスを使用しない最適なオプションは、長時間の使用を思いとどまらせるために、何らかの重要な方法でデモ バージョンを操作することです。
当社のソフトウェアのデモ版は 30 分後にシャットダウンしますが、フル アクセスを許可する (日付付きの) 試用キーを登録し、有効期限が切れるとデモ版に戻ることができます。
最善の方法は、ソフトウェアをサーバーに接続させ、そこにインストール日を登録し、起動するたびにサーバーに接続させることです
ただし、これにはソフトウェアがサーバーにアクセスできる必要があるため、インターネットにアクセスできる必要がありますが、これは常に正しいとは限りません
この方法のもう1つの利点は、ソフトウェアがサーバーで利用可能な更新を確認できることです
私はそれを試したことはありませんが、別のアイデア:
アプリケーションでアプリケーション exe のファイル プロファイルをチェックし、それを現在の日付/時刻と比較することができます。
もちろん、ユーザーはいつでも将来の日付/時刻を設定してからアプリケーションをインストールするか、現在の日付/時刻にインストールして実行する前に日付/時刻を過去に変更できます。
アプリケーションが独自のプロパティにアクセスできるかどうかはわかりませんが、これを実行すると、exe を実行してテキスト ボックスをクリックすると、いくつかのデータが得られます。
'1 form with
' 1 textbox : name=Text1 multiline=true
Option Explicit
Private Sub Form_Resize()
Text1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub Text1_Click()
Dim intFile As Integer
Dim strFile As String
Dim lngSize As Long
Dim dateMod As Date
Dim fs As New Scripting.FileSystemObject
Dim f As File
Text1.Text = ""
' length of file
strFile = App.Path & "\FileProp.exe"
intFile = FreeFile
Open strFile For Input As #intFile
lngSize = LOF(intFile)
Close intFile
Text1.SelText = "LOF : " & CStr(lngSize) & vbCrLf
' last modified
dateMod = FileDateTime(strFile)
Text1.SelText = "FileDateTime : " & CStr(dateMod) & vbCrLf
' filesystemobject
Set f = fs.GetFile(strFile)
Text1.SelText = "fs.DateCreated : " & f.DateCreated & vbCrLf
Text1.SelText = "fs.DateLastAccessed : " & f.DateLastAccessed & vbCrLf
Text1.SelText = "fs.DateLastModified : " & f.DateLastModified & vbCrLf
End Sub