2009-05-16 4 views
0

Ich habe eine Anwendung (C#) und ich habe die Aufgabe, ein einfaches Lizenzierungsschema zu erstellen. Während ich das tue, muss ich diese Information irgendwo im Computer speichern, um die Verwendung zu begrenzen.Wo und wie sollte ich lizenzbezogene Informationen speichern?

Ich muss ein Datum und einen Zähler speichern.

Wie und wo soll ich die Informationen speichern, die auf Windows Vista, müssen nicht über Administratorrechte erfordern zu laufen? (Was bedeutet, es in System32, Programmdateien, HKEY_LOCAL_MACHINE zu speichern ist keine Option.)

Bitte überschwemmen Sie nicht die Antworten mit "tun Sie es nicht" oder "es wird trotzdem geknackt werden". Ich verstehe diese Logiken. Ich muss einfach alles tun, was für diesen Zweck getan werden kann.

Antwort

4

Betrachten Sie eine Drittanbieter-Lizenzierungskomponente verwendet wird, wie XHEO - es gibt keine Notwendigkeit, das Rad neu zu erfinden.

Wenn Sie noch benötigt, um Ihre eigene Lizenz-System zu schreiben, sollten Sie die Profilverzeichnisse des Benutzers oder über den HKEY_CURRENT_USER Zweig.

+1

Der einzige Vorteil ein „roll your own“ ist Sicherheit durch Unklarheit kopiert, gestohlen werden. Wenn es nicht zu lange dauert und die Anforderungen erfüllt, könnte es in Ordnung sein. –

+0

Solche Dinge beginnen scheinbar einfach, aber meistens beginnt es, viel Zeit zu saugen. Stattdessen möchte ich mich stattdessen auf meine Kernfunktionalität konzentrieren und stattdessen ein Drittanbietersystem verwenden.Ein solches System, das Sie in Betracht ziehen sollten, ist CryptoLicensing. – logicnp

0

für Unternehmen nutzen wir immer die app_root/license.

wir auch eine eigene benutzerdefinierte Lösung verwenden, aber es ist ziemlich trivial, diese Daten zu verschlüsseln und die Lizenz-Log für Manipulation zu überprüfen.

4

Wir verwenden eine signierte XML-Lizenzdatei. Es ist eine einfache XML-Datei, die anzeigt, was der Benutzer gekauft hat.

Das Schöne daran ist, dass es Zukunft kompatibel ist. Sie können problemlos ein Produktmerkmal oder eine Produktlinie, Ablaufdaten und Feature-Attribute hinzufügen.

Es ist einfach für unsere Website Commerce zu erstellen und auf Nachfrage Paket Lizenzen, nur sicher sein, Ihre privaten Schlüssel nie bekommen. Die Vorteile sind für uns die Nachteile, und das größte Problem, das wir nicht umgehen können, ist einfach die Lizenzdatei zu bewältigen.

hier ist eine XML-Beispieldatei

<?xml version="1.0" encoding="utf-8"?> 
<ProductName> 
    <License> 
    <LicenseId>20025fb9-5349-46d4-a530-55b0295beaaa</LicenseId> 
    <CustomerName>[email protected]</CustomerName> 
    <MajorVersion>2008</MajorVersion> 
    <Product>Friendly Display Name</Product> 
    <ProductType>Enterprise</ProductType> 
    <Features> 
     <!--Add features here--> 
    </Features> 
    <Expires>0001-01-01T00:00:00</Expires> 
    </License> 
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
    <SignedInfo> 
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 
     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 
     <Reference URI=""> 
     <Transforms> 
      <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
     </Transforms> 
     <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
     <DigestValue>u3{..........}U2jo=</DigestValue> 
     </Reference> 
    </SignedInfo> 
    <SignatureValue>QFg1kI{...............}DwDIE=</SignatureValue> 
    </Signature> 
</ProductName> 

Und wir verwenden einfache .NET in API gebaut, um die XML-Signatur und die Bestätigung zu tun, dass es versengt und gültig ist.

Ich mag Dinge ...

.. Es ist leicht zu lesen. (für technische Unterstützung) .. Es ist leicht zu ersetzen .. Einfach zu speichern, in das Dateisystem oder in unserem Fall, die Datenbank, für den einfachen Zugriff auf und aus der Benutzeroberfläche. (Wir haben ein vorhandenes Update/Upgrade-System) .. es ist einfach zu aktualisieren. Wir haben einen Service, der Ihre alte Lizenz akzeptiert und nach der Validierung Upgrade-Preise basierend auf dem bereits Gekauften anbietet. Dann protokolliert das Handelssystem die alten und neuen Lizenzdateien als Referenz.

Ich mag Dinge nicht ...

.. Könnte leicht

+1

Eine Möglichkeit, dies zu verbessern, besteht darin, eine hardwaremäßig abgeleitete ID in der Lizenz zu speichern und zu signieren. – ASk