// LicenceVerifier.h // --------------------------------------------------------------------------- // Verification de licence Vision (meme serveur/API que le projet "impose") - // implementation Win32 pure (WinINet + Registre), independante du SDK // Acrobat. Peut etre compilee et testee comme executable console autonome // via TestConsole.cpp avant d'etre integree au plugin Acrobat (PluginMain.cpp). // // Dependances : Wininet.lib (WinINet), Advapi32.lib (Registre) - standard // Win32, disponibles avec n'importe quelle installation de Visual Studio. // --------------------------------------------------------------------------- #pragma once #include namespace CDImpLicence { struct ResultatVerification { bool succesReseau = false; // la requete HTTP a reussi (reponse recue) bool valide = false; // la licence est active selon le serveur int offlineTimeoutHeures = 24; std::string erreur; // message d'erreur eventuel std::string reponseBrute; // corps de la reponse, pour diagnostic }; // Construit l'URL de verification et effectue la requete GET. // serveurUrl : ex. "https://vision.copydev.fr/api/license.php" ResultatVerification VerifierLicence( const std::wstring& serveurUrl, const std::wstring& cleLicence, const std::wstring& machineId, const std::wstring& hostname, const std::wstring& produit ); // Identifiant machine stable : tente d'utiliser le nom de la machine // Windows (GetComputerNameW) combine au volume serial number du disque // systeme (GetVolumeInformationW), deux API Win32 standard et fiables - // contrairement a l'approche JS qui devait generer un identifiant // aleatoire faute d'acces materiel direct. std::wstring ObtenirMachineId(); std::wstring ObtenirHostname(); // Ecrit le verdict de licence dans HKCU\Software\Copydev\ImposingAcrobat // sous forme de chaines REG_SZ simples (lisibles depuis le JS via // WScript.Shell.RegRead, qui gere mal certains types REG_DWORD/QWORD) : // LicenceOK "1" ou "0" // LicenceValideJusqua timestamp Unix (secondes, en texte) void EcrireVerdictRegistre(bool valide, int dureeToleranceHeures); // Relit le verdict actuellement stocke (utilise par TestConsole.cpp pour // verifier l'ecriture, et a titre de reference pour l'equivalent JS). bool LireVerdictRegistre(bool& valideOut, long long& expirationUnixOut); } // namespace CDImpLicence