C# 登錄檔法-限制軟體使用次數

Cmale發表於2024-06-08

功能簡介:

在登錄檔HKEY_CURRENT_USER\SOFTWARE下,如果沒有則新建MyRegDataApp項,在MyRegDataApp項下面,如果沒有則新建array值,並設定引數為 int UseCount次,

當軟體執行一次程式,登錄檔次數減一,當引數為0時,每次啟動都會提示並自動退出軟體,程式碼如下:

一、包含名稱空間

using Microsoft.Win32;

二、編寫方法

private void UseCount(int usageCount,string valueName)
        {
            // 檢查HKEY_CURRENT_USER\SOFTWARE下是否存在MyRegDataApp鍵
            RegistryKey softwareKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true);
            RegistryKey myRegDataAppKey = softwareKey.OpenSubKey("MyRegDataApp", true);
            if (myRegDataAppKey == null)
            {
                // 如果不存在,則建立MyRegDataApp鍵
                myRegDataAppKey = softwareKey.CreateSubKey("MyRegDataApp");
            }

            // 檢查MyRegDataApp下是否存在array項
            if (myRegDataAppKey.GetValue(valueName) == null)
            {
                // 如果不存在,則建立array項
                myRegDataAppKey.SetValue(valueName, usageCount);
                MessageBox.Show("您可以免費使用本軟體" + usageCount + "次!", "感謝您首次使用");
                // 關閉登錄檔鍵
                myRegDataAppKey.Close();
                softwareKey.Close();
                return;
            }
            try
            {
                object usetime = myRegDataAppKey.GetValue(valueName);//讀取鍵值,可使用次數
                int newtime = Int32.Parse(usetime.ToString()) - 1;
                if (newtime < 0)
                {
                    if (MessageBox.Show("如需繼續使用,請聯絡軟體開發者!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
                    {
                        // 關閉登錄檔鍵
                        myRegDataAppKey.Close();
                        softwareKey.Close();
                        Application.Exit();
                    }
                }
                else
                {
                    MessageBox.Show("你還可以使用本軟體 :" + usetime.ToString() + "次!", "確認", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    myRegDataAppKey.SetValue(valueName, (object)newtime);//更新鍵值,可使用次數減1
                }
            }
            catch
            {
                //RegKey.SetValue(valueName, (object)10);  //建立鍵值,儲存可使用次數
                //MessageBox.Show("您可以免費使用本軟體10次!", "感謝您首次使用");
                //return;
            }
            // 關閉登錄檔鍵
            myRegDataAppKey.Close();
            softwareKey.Close();
        }

三、呼叫方法

UseCount(250, "array");//使用次數限制

相關文章