首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 程序打包限制安裝次數:註冊表計數或服務器驗證兩種方案

     編輯:程式設計綜合問答

需求:安裝包限制安裝次數。分兩種場景:

場景一:限制單機安裝次數 (本地檢查)

  • 安裝腳本 (InstallShield/NSIS/Inno Setup/高級安裝程序) 在 InstallUISequence 階段讀取註冊表 HKCU\Software\YourApp\InstallCount。
  • 若不存在 → 寫入 1,允許安裝。
  • 若存在且 >= 最大次數 → 彈窗提示並 Abort。
  • 安裝成功後 InstallCount++ 寫回。

缺點:用戶可手動刪除註冊表繞過。

場景二:限制全域總安裝次數 (服務器驗證)

  1. 搭建簡單 HTTP API (如 /api/check?sn=xxx)。
  2. 安裝程序啟動時攜帶序列號/機器碼請求 API。
  3. 服務器檢查該序列號已安裝次數,未超限返回 {allowed: true, count: 3},超限返回 {allowed: false}。
  4. 安裝程序根據響應決定繼續或退出。
  5. 安裝完成回調 /api/confirm 計數 +1。

優點:防破解、可統計、支援授權管理。

InstallShield 實現要點

  • 使用 InstallScript 或 Custom Action (DLL/VBScript/PowerShell) 實現邏輯。
  • 在 OnFirstUIBefore 或 SdWelcome 之後插入自定義對話框驗證。
  • 網絡請求用 WinHttp 或 URLDownloadToFile 同步調用。

NSIS 範例 (本地註冊表)

Var InstallCount
Section
    ReadRegStr $InstallCount HKCU "Software\MyApp" "InstallCount"
    StrCmp $InstallCount "" 0 +2
    StrCpy $InstallCount "0"
    IntOp $InstallCount $InstallCount + 1
    IntCmp $InstallCount 4 0 +2 +3  ; 超過3次
    MessageBox MB_OK "安裝次數已達上限"
    Abort
    WriteRegStr HKCU "Software\MyApp" "InstallCount" "$InstallCount"
SectionEnd

建議

  • 單機試用版 → 本地註冊表/配置文件計數。
  • 商業授權版 → 必須服務器驗證,結合機器碼綁定。
  • 安裝程序制作工具 (InstallShield, Advanced Installer, NSIS, Inno Setup) 均支援腳本擴展實現上述邏輯。

根據業務場景選擇本地或雲端驗證方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved