<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="0.92">
<channel>
	<docs>http://backend.userland.com/rss092</docs>
	<title>LogicNP Software Knowledge Base And FAQ</title>
	<link>http://www.ssware.com/support/</link>
	<description></description>
	<managingEditor>support@ssware.com</managingEditor>
	<webMaster>support@ssware.com</webMaster>
	<lastBuildDate>Sat, 04 Feb 2012 05:22:26 GMT</lastBuildDate>
<item>
	<title>CryptoLicensing For ActiveX :: HOWTO: Populate the License Management database with user data fields when generating licenses using the API</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=752#752</link>
	<description>
&lt;span class="postbody"&gt;When using the Generator API to generate licenses, use the following code before calling the Generate method:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;// Get the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
PropertiesPlugin plg = gen.GetUserDataPluginFromName&amp;#40;&amp;quot;Data Fields&amp;quot;&amp;#41; as PropertiesPlugin;
&lt;br /&gt;

&lt;br /&gt;
// Set it as the user-data plugin which the generator will use to retrieve the user-data to embed in the generated license
&lt;br /&gt;
gen.SetUserDataPlugin&amp;#40;plg&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// populate the fields of the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Name&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Email&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Company&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;

&lt;br /&gt;
// Alternately you can also do the following to set all fields at once...
&lt;br /&gt;
// plg.SetUserData&amp;#40;&amp;quot;first name=xxx;last name=yyy&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// Generate the license...
&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41;;
&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;' Get the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
Dim plg As PropertiesPlugin = TryCast&amp;#40;gen.GetUserDataPluginFromName&amp;#40;&amp;quot;Data Fields&amp;quot;&amp;#41;, PropertiesPlugin&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
' Set it as the user-data plugin which the generator will use to retrieve the user-data to embed in the generated license
&lt;br /&gt;
gen.SetUserDataPlugin&amp;#40;plg&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
' populate the fields of the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Name&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Email&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Company&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
' Alternately you can also do the following to set all fields at once...
&lt;br /&gt;
' plg.SetUserData&amp;#40;&amp;quot;first name=xxx;last name=yyy&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
' Generate the license...
&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For MFC :: HOWTO: Populate the License Management database with user data fields when generating licenses using the API</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=751#751</link>
	<description>
&lt;span class="postbody"&gt;When using the Generator API to generate licenses, use the following code before calling the Generate method:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;// Get the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
PropertiesPlugin plg = gen.GetUserDataPluginFromName&amp;#40;&amp;quot;Data Fields&amp;quot;&amp;#41; as PropertiesPlugin;
&lt;br /&gt;

&lt;br /&gt;
// Set it as the user-data plugin which the generator will use to retrieve the user-data to embed in the generated license
&lt;br /&gt;
gen.SetUserDataPlugin&amp;#40;plg&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// populate the fields of the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Name&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Email&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Company&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;

&lt;br /&gt;
// Alternately you can also do the following to set all fields at once...
&lt;br /&gt;
// plg.SetUserData&amp;#40;&amp;quot;first name=xxx;last name=yyy&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// Generate the license...
&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41;;
&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;' Get the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
Dim plg As PropertiesPlugin = TryCast&amp;#40;gen.GetUserDataPluginFromName&amp;#40;&amp;quot;Data Fields&amp;quot;&amp;#41;, PropertiesPlugin&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
' Set it as the user-data plugin which the generator will use to retrieve the user-data to embed in the generated license
&lt;br /&gt;
gen.SetUserDataPlugin&amp;#40;plg&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
' populate the fields of the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Name&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Email&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Company&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
' Alternately you can also do the following to set all fields at once...
&lt;br /&gt;
' plg.SetUserData&amp;#40;&amp;quot;first name=xxx;last name=yyy&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
' Generate the license...
&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For .Net :: HOWTO: Populate the License Management database with user data fields when generating licenses using the API</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=750#750</link>
	<description>
&lt;span class="postbody"&gt;When using the Generator API to generate licenses, use the following code before calling the Generate method:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;// Get the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
PropertiesPlugin plg = gen.GetUserDataPluginFromName&amp;#40;&amp;quot;Data Fields&amp;quot;&amp;#41; as PropertiesPlugin;
&lt;br /&gt;

&lt;br /&gt;
// Set it as the user-data plugin which the generator will use to retrieve the user-data to embed in the generated license
&lt;br /&gt;
gen.SetUserDataPlugin&amp;#40;plg&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// populate the fields of the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Name&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Email&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Company&amp;quot;&amp;#41;.Value =&amp;quot;xyz&amp;quot;;
&lt;br /&gt;

&lt;br /&gt;
// Alternately you can also do the following to set all fields at once...
&lt;br /&gt;
// plg.SetUserData&amp;#40;&amp;quot;first name=xxx;last name=yyy&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// Generate the license...
&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41;;
&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;' Get the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
Dim plg As PropertiesPlugin = TryCast&amp;#40;gen.GetUserDataPluginFromName&amp;#40;&amp;quot;Data Fields&amp;quot;&amp;#41;, PropertiesPlugin&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
' Set it as the user-data plugin which the generator will use to retrieve the user-data to embed in the generated license
&lt;br /&gt;
gen.SetUserDataPlugin&amp;#40;plg&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
' populate the fields of the &amp;quot;Data Fields&amp;quot; plugin
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Name&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Email&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;
plg.GetPropertyByName&amp;#40;&amp;quot;Company&amp;quot;&amp;#41;.Value = &amp;quot;xyz&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
' Alternately you can also do the following to set all fields at once...
&lt;br /&gt;
' plg.SetUserData&amp;#40;&amp;quot;first name=xxx;last name=yyy&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
' Generate the license...
&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For MFC :: HOWTO: Create custom license service methods</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=749#749</link>
	<description>
&lt;span class="postbody"&gt;You can create and add your own methods to the default set of license service methods. These custom methods can be called from your software using the &lt;span style=&quot;font-weight: bold&quot;&gt;CryptoLicense.QueryWebService&lt;/span&gt; method. The following demonstrates how to add a custom method which retrieves the number of activations remaining for a license:
&lt;br /&gt;

&lt;br /&gt;
In the App_Code/LicenseService.cs or App_Code/LicenseService.vb file of your license service, add following method to LicenseServiceClass :
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;// The custom method must be marked with a &amp;quot;WebMethod&amp;quot; attribute and must have a return type of &amp;quot;string&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
&amp;#91;WebMethod&amp;#93;
&lt;br /&gt;

&lt;br /&gt;
public string GetCurrentActivations&amp;#40;string licenseCode, string settingsFilePath&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
string ret = &amp;quot;&amp;quot;;
&lt;br /&gt;

&lt;br /&gt;
try
&lt;br /&gt;

&lt;br /&gt;
&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
this.Initialise&amp;#40;settingsFilePath&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// Decrypt license code
&lt;br /&gt;

&lt;br /&gt;
licenseCode = this.Generator.DecryptString&amp;#40;licenseCode&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
CryptoLicense lic = new CryptoLicense&amp;#40;licenseCode, this.Generator.GetValidationKey&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
if &amp;#40;lic.ValidateSignature&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
ret = this.GetNumberOfActivations&amp;#40;lic, &amp;quot;&amp;quot;&amp;#41;.ToString&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
catch &amp;#123; &amp;#125;
&lt;br /&gt;

&lt;br /&gt;
// Return result in encrypted form for security.
&lt;br /&gt;

&lt;br /&gt;
return this.Generator.EncryptString&amp;#40;ret&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;#125;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;' The custom method must be marked with a &amp;quot;WebMethod&amp;quot; attribute and must have a return type of &amp;quot;string&amp;quot;
&lt;br /&gt;
&amp;lt;WebMethod&amp;gt; _
&lt;br /&gt;
Public Function GetCurrentActivations&amp;#40;licenseCode As String, settingsFilePath As String&amp;#41; As String
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Dim ret As String = &amp;quot;&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Try
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Me.Initialise&amp;#40;settingsFilePath&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;' Decrypt license code
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;licenseCode = Me.Generator.DecryptString&amp;#40;licenseCode&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Dim lic As New CryptoLicense&amp;#40;licenseCode, Me.Generator.GetValidationKey&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;If lic.ValidateSignature&amp;#40;&amp;#41; Then
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;ret = Me.GetNumberOfActivations&amp;#40;lic, &amp;quot;&amp;quot;&amp;#41;.ToString&amp;#40;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;End If
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Catch
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;End Try
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;' Return result in encrypted form for security.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Return Me.Generator.EncryptString&amp;#40;ret&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
End Function&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
You can then call this method from your software as follows:
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;// Standard setup...
&lt;br /&gt;

&lt;br /&gt;
CCryptoLicense* lic = new CCryptoLicense&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
lic-&amp;gt;SetValidationKey&amp;#40;_T&amp;#40;&amp;quot;&amp;#123;validation key for your project&amp;quot;&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
lic-&amp;gt;SetLicenseCode&amp;#40;_T&amp;#40;&amp;quot;&amp;#123;a license code generated with a 'Limit Machines To' setting&amp;#125;&amp;quot;&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
lic-&amp;gt;SetLicenseServiceURL&amp;#40;_T&amp;#40;&amp;quot;&amp;#123;url of your license service&amp;#125;&amp;quot;&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// Call the custom &amp;quot;GetCurrentActivations&amp;quot; web method. 
&lt;br /&gt;

&lt;br /&gt;
// The license code can be sent in encrypted form using EncryptString method for security
&lt;br /&gt;
LPCTSTR paramNames&amp;#91;&amp;#93; = &amp;#123; _T&amp;#40;&amp;quot;licenseCode&amp;quot;&amp;#41;, _T&amp;#40;&amp;quot;settingsFilePath&amp;quot;&amp;#41; &amp;#125;; // params
&lt;br /&gt;

&lt;br /&gt;
CString licCode ;
&lt;br /&gt;
licCode= lic-&amp;gt;GetLicenseCode&amp;#40;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
CString encrStr;
&lt;br /&gt;
encrStr = lic-&amp;gt;EncryptString&amp;#40;licCode&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
LPCTSTR paramValues&amp;#91;&amp;#93; = &amp;#123;encrStr , _T&amp;#40;&amp;quot;&amp;quot; &amp;#41;&amp;#125;; // param values
&lt;br /&gt;

&lt;br /&gt;
CString ret;
&lt;br /&gt;
ret= lic-&amp;gt;QueryWebService&amp;#40;_T&amp;#40;&amp;quot;GetCurrentActivations&amp;quot;&amp;#41;,&amp;nbsp; &amp;nbsp;paramNames, paramValues,2&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
// Return value is encrypted, decrypt it and show the result
&lt;br /&gt;
CString decrStr ;
&lt;br /&gt;
decrStr = lic-&amp;gt;DecryptString&amp;#40;ret&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
CString result ;
&lt;br /&gt;
result= _T&amp;#40;&amp;quot;CurrentActivations = &amp;quot;&amp;#41;+ decrStr;
&lt;br /&gt;

&lt;br /&gt;
AfxMessageBox&amp;#40;result&amp;#41;;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For ActiveX :: HOWTO: Create custom license service methods</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=748#748</link>
	<description>
&lt;span class="postbody"&gt;You can create and add your own methods to the default set of license service methods. These custom methods can be called from your software using the &lt;span style=&quot;font-weight: bold&quot;&gt;CryptoLicense.QueryWebService&lt;/span&gt; method. The following demonstrates how to add a custom method which retrieves the number of activations remaining for a license:
&lt;br /&gt;

&lt;br /&gt;
In the App_Code/LicenseService.cs or App_Code/LicenseService.vb file of your license service, add following method to LicenseServiceClass :
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;// The custom method must be marked with a &amp;quot;WebMethod&amp;quot; attribute and must have a return type of &amp;quot;string&amp;quot;
&lt;br /&gt;
&amp;#91;WebMethod&amp;#93;
&lt;br /&gt;
public string GetCurrentActivations&amp;#40;string licenseCode, string settingsFilePath&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
string ret = &amp;quot;&amp;quot;;
&lt;br /&gt;

&lt;br /&gt;
try
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;

&lt;br /&gt;
this.Initialise&amp;#40;settingsFilePath&amp;#41;;
&lt;br /&gt;
// Decrypt license code
&lt;br /&gt;
licenseCode = this.Generator.DecryptString&amp;#40;licenseCode&amp;#41;;
&lt;br /&gt;
CryptoLicense lic = new CryptoLicense&amp;#40;licenseCode, this.Generator.GetValidationKey&amp;#40;&amp;#41;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
if &amp;#40;lic.ValidateSignature&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
ret = this.GetNumberOfActivations&amp;#40;lic, &amp;quot;&amp;quot;&amp;#41;.ToString&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
catch &amp;#123; &amp;#125;
&lt;br /&gt;

&lt;br /&gt;
// Return result in encrypted form for security.
&lt;br /&gt;
return this.Generator.EncryptString&amp;#40;ret&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;#125;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;' The custom method must be marked with a &amp;quot;WebMethod&amp;quot; attribute and must have a return type of &amp;quot;string&amp;quot;
&lt;br /&gt;
&amp;lt;WebMethod&amp;gt; _
&lt;br /&gt;
Public Function GetCurrentActivations&amp;#40;licenseCode As String, settingsFilePath As String&amp;#41; As String
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Dim ret As String = &amp;quot;&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Try
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Me.Initialise&amp;#40;settingsFilePath&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;' Decrypt license code
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;licenseCode = Me.Generator.DecryptString&amp;#40;licenseCode&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Dim lic As New CryptoLicense&amp;#40;licenseCode, Me.Generator.GetValidationKey&amp;#40;&amp;#41;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;If lic.ValidateSignature&amp;#40;&amp;#41; Then
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;ret = Me.GetNumberOfActivations&amp;#40;lic, &amp;quot;&amp;quot;&amp;#41;.ToString&amp;#40;&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;End If
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Catch
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;End Try
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;' Return result in encrypted form for security.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Return Me.Generator.EncryptString&amp;#40;ret&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
End Function&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
You can then call this method from your software as follows:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB6]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;' Standard setup...
&lt;br /&gt;
lic.ValidationKey = &amp;quot;&amp;#123;validation key for your project&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
lic.LicenseCode = &amp;quot;&amp;#123;a license code generated with a 'Limit Machines To' setting&amp;#125;&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
lic.LicenseServiceURL = &amp;quot;&amp;#123;url of your license service&amp;#125;&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
' Call the custom &amp;quot;GetCurrentActivations&amp;quot; web method.
&lt;br /&gt;

&lt;br /&gt;
' The license code can be sent in encrypted form using EncryptString method for security
&lt;br /&gt;

&lt;br /&gt;
Dim paramNames&amp;#40;1&amp;#41; As String
&lt;br /&gt;
' params
&lt;br /&gt;
paramNames&amp;#40;0&amp;#41; = &amp;quot;licenseCode&amp;quot;
&lt;br /&gt;
paramNames&amp;#40;1&amp;#41; = &amp;quot;settingsFilePath&amp;quot; ' params
&lt;br /&gt;

&lt;br /&gt;
' param values
&lt;br /&gt;
Dim paramValues&amp;#40;1&amp;#41; As String
&lt;br /&gt;
paramValues&amp;#40;0&amp;#41; = lic.EncryptString&amp;#40;lic.LicenseCode&amp;#41;
&lt;br /&gt;
paramValues&amp;#40;1&amp;#41; = &amp;quot;&amp;quot;
&lt;br /&gt;

&lt;br /&gt;
Dim ret As String
&lt;br /&gt;
ret = lic.QueryWebService&amp;#40;&amp;quot;GetCurrentActivations&amp;quot;, paramNames, paramValues&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
' Return value is encrypted, decrypt it and show the result
&lt;br /&gt;
MsgBox &amp;#40;&amp;quot;CurrentActivations = &amp;quot; + lic.DecryptString&amp;#40;ret&amp;#41;&amp;#41;
&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For ActiveX :: HOWTO: Avoid distribution of floating license code to multiple machines.</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=747#747</link>
	<description>
&lt;span class="postbody"&gt;When using a customer-deployed floating license service, the typical scenario is to send the floating license code to the customer. The customer then distributes the license code internally to all the machines which will use your software. However, in case the customer has hundreds or thousands of machines on their network, this approach can be cumbersome or even unfeasible.
&lt;br /&gt;

&lt;br /&gt;
However, you can avoid the customer having to distribute the floating license code to multiple machine using these simple steps:
&lt;br /&gt;

&lt;br /&gt;
- Create a &lt;span style=&quot;font-weight: bold&quot;&gt;license.txt &lt;/span&gt;file (or use any other name you like) in the &lt;span style=&quot;font-weight: bold&quot;&gt;App_Data &lt;/span&gt;folder containing the floating license code.
&lt;br /&gt;

&lt;br /&gt;
- In the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseCode.cs (or .vb) &lt;/span&gt;file of your customer-deployed license service, add the following custom web service method to the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseServiceClass&lt;/span&gt; class:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&amp;#91;WebMethod&amp;#40;&amp;#41;&amp;#93;
&lt;br /&gt;
public string GetLicenseCode&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
using &amp;#40;StreamReader sr = new StreamReader&amp;#40;GetRealFilePath&amp;#40;&amp;quot;%AppDomainAppPath%App_Data\\license.txt&amp;quot;&amp;#41;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; return sr.ReadToEnd&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&amp;lt;WebMethod&amp;gt; _
&lt;br /&gt;
Public Function GetLicenseCode&amp;#40;&amp;#41; As String
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Using sr As New StreamReader&amp;#40;GetRealFilePath&amp;#40;&amp;quot;%AppDomainAppPath%App_Data\license.txt&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Return sr.ReadToEnd&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; End Using
&lt;br /&gt;
End Function&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
When invoked, this web service method returns the license code stored in the license.txt file.
&lt;br /&gt;

&lt;br /&gt;
- In your actual app, call the above web service method as follows:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB6]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;lic.LicenseCode = lic.QueryWebService&amp;#40;&amp;quot;GetLicenseCode&amp;quot;, Nothing, Nothing&amp;#41;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;
The above line will invoke the custom web service method and set the CryptoLicense.LicenseCode property to the returned license code.
&lt;br /&gt;

&lt;br /&gt;
- Now that the license code is loaded into the CryptoLicense instance, you can proceed to validate it as usual using the .Status property
&lt;br /&gt;

&lt;br /&gt;
Using this approach, the customer only needs to save the license code in one place (in the license.txt file in the App_Data folder) instead of having to distribute it to all the machines which need to use the floating license.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For MFC :: HOWTO: Avoid distribution of floating license code to multiple machines.</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=746#746</link>
	<description>
&lt;span class="postbody"&gt;When using a customer-deployed floating license service, the typical scenario is to send the floating license code to the customer. The customer then distributes the license code internally to all the machines which will use your software. However, in case the customer has hundreds or thousands of machines on their network, this approach can be cumbersome or even unfeasible.
&lt;br /&gt;

&lt;br /&gt;
However, you can avoid the customer having to distribute the floating license code to multiple machine using these simple steps:
&lt;br /&gt;

&lt;br /&gt;
- Create a &lt;span style=&quot;font-weight: bold&quot;&gt;license.txt &lt;/span&gt;file (or use any other name you like) in the &lt;span style=&quot;font-weight: bold&quot;&gt;App_Data &lt;/span&gt;folder containing the floating license code.
&lt;br /&gt;

&lt;br /&gt;
- In the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseCode.cs (or .vb) &lt;/span&gt;file of your customer-deployed license service, add the following custom web service method to the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseServiceClass&lt;/span&gt; class:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&amp;#91;WebMethod&amp;#40;&amp;#41;&amp;#93;
&lt;br /&gt;
public string GetLicenseCode&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
using &amp;#40;StreamReader sr = new StreamReader&amp;#40;GetRealFilePath&amp;#40;&amp;quot;%AppDomainAppPath%App_Data\\license.txt&amp;quot;&amp;#41;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; return sr.ReadToEnd&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&amp;lt;WebMethod&amp;gt; _
&lt;br /&gt;
Public Function GetLicenseCode&amp;#40;&amp;#41; As String
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Using sr As New StreamReader&amp;#40;GetRealFilePath&amp;#40;&amp;quot;%AppDomainAppPath%App_Data\license.txt&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Return sr.ReadToEnd&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; End Using
&lt;br /&gt;
End Function&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
When invoked, this web service method returns the license code stored in the license.txt file.
&lt;br /&gt;

&lt;br /&gt;
- In your actual app, call the above web service method as follows:
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;CString licStr;
&lt;br /&gt;
licStr = lic.QueryWebService&amp;#40;_T&amp;#40;&amp;quot;GetLicenseCode&amp;quot;&amp;#41;, NULL, NULL,0&amp;#41;;
&lt;br /&gt;
lic.SetLicenseCode&amp;#40;licStr&amp;#41;;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
The above line will invoke the custom web service method and set the CCryptoLicense.SetLicenseCode() function to the returned license code.
&lt;br /&gt;

&lt;br /&gt;
- Now that the license code is loaded into the CryptoLicense instance, you can proceed to validate it as usual using the CCryptoLicense.GetStatus() function.
&lt;br /&gt;

&lt;br /&gt;
Using this approach, the customer only needs to save the license code in one place (in the license.txt file in the App_Data folder) instead of having to distribute it to all the machines which need to use the floating license.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For .Net :: HOWTO: Avoid distribution of floating license code to multiple machines.</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=745#745</link>
	<description>
&lt;span class="postbody"&gt;When using a customer-deployed floating license service, the typical scenario is to send the floating license code to the customer. The customer then distributes the license code internally to all the machines which will use your software. However, in case the customer has hundreds or thousands of machines on their network, this approach can be cumbersome or even unfeasible.
&lt;br /&gt;

&lt;br /&gt;
However, you can avoid the customer having to distribute the floating license code to multiple machine using these simple steps:
&lt;br /&gt;

&lt;br /&gt;
- Create a &lt;span style=&quot;font-weight: bold&quot;&gt;license.txt &lt;/span&gt;file (or use any other name you like) in the &lt;span style=&quot;font-weight: bold&quot;&gt;App_Data &lt;/span&gt;folder containing the floating license code.
&lt;br /&gt;

&lt;br /&gt;
- In the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseCode.cs (or .vb) &lt;/span&gt;file of your customer-deployed license service, add the following custom web service method to the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseServiceClass&lt;/span&gt; class:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&amp;#91;WebMethod&amp;#40;&amp;#41;&amp;#93;
&lt;br /&gt;
public string GetLicenseCode&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
using &amp;#40;StreamReader sr = new StreamReader&amp;#40;GetRealFilePath&amp;#40;&amp;quot;%AppDomainAppPath%App_Data\\license.txt&amp;quot;&amp;#41;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; return sr.ReadToEnd&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&amp;lt;WebMethod&amp;gt; _
&lt;br /&gt;
Public Function GetLicenseCode&amp;#40;&amp;#41; As String
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Using sr As New StreamReader&amp;#40;GetRealFilePath&amp;#40;&amp;quot;%AppDomainAppPath%App_Data\license.txt&amp;quot;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Return sr.ReadToEnd&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; End Using
&lt;br /&gt;
End Function&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
When invoked, this web service method returns the license code stored in the license.txt file.
&lt;br /&gt;

&lt;br /&gt;
- In your actual app, call the above web service method as follows:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;lic.LicenseCode = lic.QueryWebService&amp;#40;&amp;quot;GetLicenseCode&amp;quot;, new string&amp;#91;&amp;#93;, new string&amp;#91;&amp;#93;&amp;#41;;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;lic.LicenseCode = lic.QueryWebService&amp;#40;&amp;quot;GetLicenseCode&amp;quot;, New String&amp;#40;&amp;#41; &amp;#123;&amp;#125;, New String&amp;#40;&amp;#41; &amp;#123;&amp;#125;&amp;#41;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
The above line will invoke the custom web service method and set the CryptoLicense.LicenseCode property to the returned license code.
&lt;br /&gt;

&lt;br /&gt;
- Now that the license code is loaded into the CryptoLicense instance, you can proceed to validate it as usual using the .Status property
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Using this approach, the customer only needs to save the license code in one place (in the license.txt file in the App_Data folder) instead of having to distribute it to all the machines which need to use the floating license.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For MFC :: INFO: Access database and 64-bit machines</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=744#744</link>
	<description>
&lt;span class="postbody"&gt;Microsoft does not provide a 64-bit version of its Access (JET) database, therefore it is not possible to use this database with CryptoLicensing on a 64-bit machine. 
&lt;br /&gt;

&lt;br /&gt;
Please consider using another database which supports 64-bit machines like SQL Server, SQL Server CE, etc.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For ActiveX :: INFO: Access database and 64-bit machines</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=743#743</link>
	<description>
&lt;span class="postbody"&gt;Microsoft does not provide a 64-bit version of its Access (JET) database, therefore it is not possible to use this database with CryptoLicensing on a 64-bit machine. 
&lt;br /&gt;

&lt;br /&gt;
Please consider using another database which supports 64-bit machines like SQL Server, SQL Server CE, etc.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For .Net :: INFO: Access database and 64-bit machines</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=742#742</link>
	<description>
&lt;span class="postbody"&gt;Microsoft does not provide a 64-bit version of its Access (JET) database, therefore it is not possible to use this database with CryptoLicensing on a 64-bit machine. 
&lt;br /&gt;

&lt;br /&gt;
Please consider using another database which supports 64-bit machines like SQL Server, SQL Server CE, etc
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For ActiveX :: Unicode and x64 versions of the ocx files</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=741#741</link>
	<description>
&lt;span class="postbody"&gt;The Unicode version of the ocx file is present in the 'Unicode' subfolder under the installation folder which is typically &lt;span style=&quot;font-weight: bold&quot;&gt;%Program Files%\LogicNP Software\CryptoLicensing For ActiveX 2012&lt;/span&gt;. Similarly the x64 version of the ocx file is present in the 'x64' sub-folder.
&lt;br /&gt;

&lt;br /&gt;
To use them, first register them using the regsvr32.exe utility present in these sub-folders.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For .Net :: HOWTO: Set license features when generating new licenses using the Generator API</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=740#740</link>
	<description>
&lt;span class="postbody"&gt;Use the following code to set license features when generating new licenses using the Generator API:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[C#]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;CryptoLicenseGenerator gen = new CryptoLicenseGenerator&amp;#40;@&amp;quot;c&amp;#58;\MyApp.netlicproj&amp;quot;&amp;#41;; // Load license project
&lt;br /&gt;

&lt;br /&gt;
BitArray ba = new BitArray&amp;#40;3&amp;#41;; // 3-bit array
&lt;br /&gt;
ba&amp;#91;0&amp;#93;=true; // Feature 1 present
&lt;br /&gt;
ba&amp;#91;1&amp;#93;=false;// Feature 2 not present
&lt;br /&gt;
ba&amp;#91;2&amp;#93;=true;// Feature 3 present
&lt;br /&gt;

&lt;br /&gt;
gen.SetFeaturesEx&amp;#40;ba&amp;#41;; 
&lt;br /&gt;

&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41;; // The generated license will have the above specified features&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;[VB.Net]&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;Dim gen As CryptoLicenseGenerator = New CryptoLicenseGenerator&amp;#40;&amp;quot;c&amp;#58;\MyApp.netlicproj&amp;quot;&amp;#41; ' Load license project
&lt;br /&gt;

&lt;br /&gt;
Dim ba As BitArray = New BitArray&amp;#40;3&amp;#41; ' 3-bit array
&lt;br /&gt;
ba&amp;#40;0&amp;#41; = True ' Feature 1 present
&lt;br /&gt;
ba&amp;#40;1&amp;#41; = False ' Feature 2 not present
&lt;br /&gt;
ba&amp;#40;2&amp;#41; = True ' Feature 3 present
&lt;br /&gt;

&lt;br /&gt;
gen.SetFeaturesEx&amp;#40;ba&amp;#41;
&lt;br /&gt;

&lt;br /&gt;
gen.Generate&amp;#40;&amp;#41; ' The generated license will have the above specified features Each license can have upto 2040 bits/features.&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For ActiveX :: HOWTO: Limit serial validations to a certain number of machines.</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=739#739</link>
	<description>
&lt;span class="postbody"&gt;By default, a serial code can be validated from any number of machines. You can change this behavior by setting the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.SerialValidationLimit&lt;/span&gt; property in the &lt;span style=&quot;font-weight: bold&quot;&gt;App_Code/LicenseService.cs/vb&lt;/span&gt; file as follows:
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;public class LicenseServiceClass &amp;#58; LogicNP.CryptoLicensing.LicenseService
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; public LicenseServiceClass&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.SerialValidationLimit = SerialValidationLimit.FromProfile_MaxActivationsSetting;&amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;
&lt;br /&gt;
Public Class LicenseServiceClass
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Inherits LogicNP.CryptoLicensing.LicenseService
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Public Sub New&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Me.SerialValidationLimit = SerialValidationLimit.FromProfile_MaxActivationsSetting
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; End Sub
&lt;br /&gt;

&lt;br /&gt;
End Class&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
The &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.SerialValidationLimit&lt;/span&gt; property can have the following enumeration values:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Explicit_SameAsMaxSerialValidations&lt;/span&gt;: Specifies that the value of the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.MaxSerialValidations&lt;/span&gt; property specifies the maximum number of machines on which the serial can be validated.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;FromProfile_MaxActivationsSetting&lt;/span&gt;: Specifies that the value of the &lt;span style=&quot;font-weight: bold&quot;&gt;'MaxActivations'&lt;/span&gt; setting stored in the profile specifies the maximum number of machines on which the serial can be validated.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;FromDatabaseLicense_MaxActivationsSetting&lt;/span&gt;: Specifies that the value of the &lt;span style=&quot;font-weight: bold&quot;&gt;'MaxActivations'&lt;/span&gt; setting stored in the database license specifies the maximum number of machines on which the serial can be validated. This mode requires that the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.SerialValidationMode&lt;/span&gt; property be set to &lt;span style=&quot;font-weight: bold&quot;&gt;UseLicenseDatabaseFirst&lt;/span&gt; or &lt;span style=&quot;font-weight: bold&quot;&gt;UseLicenseDatabaseOnly&lt;/span&gt;.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
<item>
	<title>CryptoLicensing For MFC :: HOWTO: Limit serial validations to a certain number of machines.</title>
	<link>http://www.ssware.com/support/viewtopic.php?p=738#738</link>
	<description>
&lt;span class="postbody"&gt;By default, a serial code can be validated from any number of machines. You can change this behavior by setting the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.SerialValidationLimit&lt;/span&gt; property in the &lt;span style=&quot;font-weight: bold&quot;&gt;App_Code/LicenseService.cs/vb&lt;/span&gt; file as follows:
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;public class LicenseServiceClass &amp;#58; LogicNP.CryptoLicensing.LicenseService
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; public LicenseServiceClass&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.SerialValidationLimit = SerialValidationLimit.FromProfile_MaxActivationsSetting;&amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;
&lt;br /&gt;
Public Class LicenseServiceClass
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Inherits LogicNP.CryptoLicensing.LicenseService
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Public Sub New&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Me.SerialValidationLimit = SerialValidationLimit.FromProfile_MaxActivationsSetting
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; End Sub
&lt;br /&gt;

&lt;br /&gt;
End Class&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
The &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.SerialValidationLimit&lt;/span&gt; property can have the following enumeration values:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Explicit_SameAsMaxSerialValidations&lt;/span&gt;: Specifies that the value of the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.MaxSerialValidations&lt;/span&gt; property specifies the maximum number of machines on which the serial can be validated.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;FromProfile_MaxActivationsSetting&lt;/span&gt;: Specifies that the value of the &lt;span style=&quot;font-weight: bold&quot;&gt;'MaxActivations'&lt;/span&gt; setting stored in the profile specifies the maximum number of machines on which the serial can be validated.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;FromDatabaseLicense_MaxActivationsSetting&lt;/span&gt;: Specifies that the value of the &lt;span style=&quot;font-weight: bold&quot;&gt;'MaxActivations'&lt;/span&gt; setting stored in the database license specifies the maximum number of machines on which the serial can be validated. This mode requires that the &lt;span style=&quot;font-weight: bold&quot;&gt;LicenseService.SerialValidationMode&lt;/span&gt; property be set to &lt;span style=&quot;font-weight: bold&quot;&gt;UseLicenseDatabaseFirst&lt;/span&gt; or &lt;span style=&quot;font-weight: bold&quot;&gt;UseLicenseDatabaseOnly&lt;/span&gt;.
&lt;/span&gt;&lt;br /&gt;
</description>
</item>
</channel>
</rss>


