public void Launch() { new Thread(() => { var filename = Constants.PRODUCT_KEY; var launchInfo = JsonSerializeHelper.DeSerializeJson <LaunchInfo>(filename); if (launchInfo == null) { //使用试用账号 launchInfo = new LaunchInfo { ComputerName = MachineInfo.Instance.GetComputerName(), CPUSerialNumber = MachineInfo.Instance.GetCPUSerialNumber(), MACAddress = MachineInfo.Instance.GetMacAddress(), Name = PharmacyServiceConfig.Config.CurrentStore.Name, ProductKey = Constants.DEFAULT_SECURITY_KEY, ExpirationDate = DateTime.Now.AddDays(30).Date, SystemType = MachineInfo.Instance.GetSystemType() }; launchInfo.EncryptedText = EncryptionService.EncryptText(launchInfo.ExpirationDate.ToShortDateString()); WindowsRegistry.CreateRegistry(); if (WindowsRegistry.IsRegeditKeyExist(Constants.EXPIRATION_DATE)) { CallBack(Constants.PRODUCT_KEY_NOT_AVAILABLE); } CreateRegistry(launchInfo); } launchInfo.Name = PharmacyServiceConfig.Config.CurrentStore.Name; HttpHelper http = new HttpHelper(); var postdata = string.Format("ComputerName={0}&CPUSerialNumber={1}&MACAddress={2}&Name={3}&ProductKey={4}&SystemType={5}&ExpirationDate={6}", launchInfo.ComputerName, launchInfo.CPUSerialNumber, launchInfo.MACAddress, launchInfo.Name, launchInfo.ProductKey, launchInfo.SystemType, launchInfo.ExpirationDate); try { if (PingHelper.Ping()) { Log.Error("外部网络正常"); // 发送客户端设备信息 var strPHtml = http.PostPage(remoteservice + "/api/device/launch", postdata); } else { Log.Error("外部网络不通"); } } catch (Exception) { } if (File.Exists(filename)) { File.Delete(filename); } launchInfo.SerializeJson(filename); while (true) { launchInfo = JsonSerializeHelper.DeSerializeJson <LaunchInfo>(filename); if (launchInfo == null) { CallBack(Constants.PRODUCT_KEY_NOT_AVAILABLE); } else { var networkIsNotAvailable = PingHelper.Ping(); if (networkIsNotAvailable) { try { if (RemoteVerifyPrdKey(launchInfo.ProductKey)) { CallBack(Constants.PRODUCT_KEY_AVAILABLE); } else { CallBack(Constants.PRODUCT_KEY_NOT_AVAILABLE); } } catch (WebException) { networkIsNotAvailable = false; } } if (!networkIsNotAvailable) { if (OfflineVerify(launchInfo)) { CallBack(Constants.PRODUCT_KEY_AVAILABLE); } else { CallBack(Constants.PRODUCT_KEY_NOT_AVAILABLE); } } } Thread.Sleep(new TimeSpan(0, int.Parse(verifyInterval), 0)); } }).Start(); }