The Main Panel
The main panel consists of 5 pages. Each page is
designed to accomplish a special range of tasks and setups.
In the Assemblies page you can specify several assemblies as well
as the destination path of the IntelliLock output. The first
assembly in the assembly list is the main assembly. If you define
more than one assembly you can choose to merge them or lock/protect
them separately. With the button "Properties" you can setup strong
name or digital certificate settings for each assembly
Using a variety of evaluation locks, IntelliLock
gives you the ability to control use of your assembly in a variety
of ways - trial versions, software rental, custom locks, software
as a service - all are possible using IntelliLock locks, and all
without any modifications to your source code. We recommend that
you spend some time to understand these license enforcement options
as the time you invest in doing so will be time well spent.
In the Lock Settings page you specify the
licensing controls you want IntelliLock to build into your assembly
when you protect it. These locks are implemented by additional code
which IntelliLock includes in the protected assembly and requires
no changes to your assembly source code to implement. One of the
powerful features of IntelliLock licensing is that the settings you
inbuild into your assembly can be overridden by providing a license
file to your customer, meaning you do not need to supply a separate
licensed version of your program - the trial version and full
version are exactly the same, the only difference being the license
file you provide to paying customers.
- Expiration Days - Your application will work for
the specified number of days from the date of first installation on
- Expiration Date - The Expiration Date lock allows
you to specify the exact date on which your assembly should expire.
This is useful for example for beta test versions and for software
rental (where you can specify the expiration date as the day
following the last date the customer has paid for the use of your
- Executions - This lock, if enabled, causes your
application to expire after the specified number of
- Runtime - The user can run the assembly for an
unlimited number of time, but the apllication will shut down each
time it is run, after the specified number of minutes.
- Global Time - This option set an exact amount of
total minutes that your assembly can stay in memory.
- Instances - This lock, if enabled, allows you to
specify the maximum number of copies of your application the user
is allowed to run at the same time. Please note that exceeding the
specified number of instances does NOT cause your application to
- Custom - This lock, if enabled, enables trial
mode without using the locks above. This is really helpful if you
want to use your own trial restrictions. To determine the current
license status please use the InteliLock SDK.
- Expiration Behavior All
- When enabled causes the expiration of the
assembly only when all other enabled locks have expired.
- When disabled the assembly expires when any one
of the locks expires. This is a very powerful option, enabling you
to (for example) implement a trial period which is either 30 days
or 50 uses. It is worth spending a little time considering the
flexibility which this option offers.
- Run Without License File - Set to false to
require a valid license for operation. If true, enabled Inbuild
Locks are honored. If a valid license file is found the Locks
settings are overridden with the license file settings. To use this
option at least one trial lock or the custom lock must be
- Shut Down Process After Expiration - Terminates
the running process upon expiration.
- Search In Embedded Resources - Enable this option
to search for license files in the embedded resources of calling
- Search On HDD - Enable this option to search for
license files in the location of your locked assembly. If you want
to load a license directly please use the IntelliLock SDK.
- Asynchronous License Check - Check this option to
improve the startup time as the license status is checked in the
background. As soon as the license check is finished the event
will be raised. In case this option is enabled please don't check
the license status or call HardwareID.GetHardwareID(...) until
EvaluationMonitor.LicenseCheckFinished is raised.
- Dialogs - Here can can specify various dialogs
which are shown depending on the license status. The number of
possible dialog boxes may seem large, and you may worry that your
customer will see numerous dialog boxes when the locks expire. This
is not the case, the IntelliLock licensing system will only ever
display one dialog to your user. IntelliLock determines which is
the most important dialog and displays that one only. Nag Screen -
We are all familiar with nag screens in applications, reminding us
to purchase the product before the trial period expires. This
option allows you to specify whether to display a nag screen to
your user, again without any modification to the source code of
- License Name - Specifies a license file name or
extension (*.myextension). To avoid conflicts with optional methods
of extending license behavior, binary IntelliLock licenses do not
use the .LIC extension reserved to .NET license classes.
- Hardware ID - Please define a Hardware ID
generation algorithm. The algorithm is automatically used by the
SDK method HardwareID.GetHardwareID(...).
- Trial ID - Change the Trial ID to ignore previous
trials and begin a new trial period. This is useful if you want to
release a new version of your software and allow users to start a
new trial period.
- Master Key - To create valid license files, the same
master key must be used for license creation as was used to produce
IntelliLock locked output. This master key is generated when you
create your project, which must be saved to preserve the original
key. Never hand out the Master Key to anybody!
The IntelliLock license system allows you to distribute your
assembly without a license file
provided that you have set "Run Without Valid License" to True.
When your customer purchases a license, you use the License
Generator or the SDK to build a license file to unlock your
assembly. Lock settings in a license file always override settings
which are stored in the assembly.
To create a valid license file, the same master key must be used
for license creation as was used to lock your assembly. This master
key is generated when you create your project, which must be saved
to preserve the original key, otherwise you will be unable to
generate valid license files.
- Hardware Lock License - This option allows you to
create licenses which can be used only on a particular PC, based on
a Hardware ID which identifies the particular combination of
hardware in that PC. License Files which have the Hardware disabled
can be used on any PC. Utilising the Hardware Lock prevents your
customer from purchasing one license file and using it on multiple
PCs. To create licenses which are locked to the hardware of a
particular PC, you must enable "Hardware Lock" and provide
the Hardware ID of the client's PC. Please use the SDK
function to display the Hardware ID from within your assembly (for
example in the "About" dialog box).
- Tolerance Level - The tolerance level represents
the number of hardware components allowed to be changed before the
Hardware ID is recognized as invalid by your locked assembly.
- Check Hardware ID At Design Time Only - Restricts
the design-time usage to a specific machine. Useful for component
- Runtime License - The generated license is valid
- Design-Time License - The generated license is
valid during design-time by a visual designer or the compiler.
- Version Lock - Check this option to ensure the
license is only valid to a specific assembly version. Use an
asterisk (*) to define which parts of the version number should be
ignored. Click with the right mouse button on the 'License
Information' list to define further assembly restrictions.
- Apply Trial Restrictions To License File - This
option locks the license file with the settings you set in tab
"Lock Settings". Use it to extend trial periods, accomplish
subscription/time based license expiration etc...
- As Trial Version - If you check this option the
created license file applies trial restrictions (based on the
settings you set in tab "Lock Settings") to your assembly. Useful
to apply or extend trial periods.
- As Full Version - If you check this option the
created license file uses the settings you set in tab "Lock
Settings" to apply a time limited full version to your
- New Period - If you check this option the created
license file uses an independent data slot to store exceeded days
etc. Leave this unchecked to reuse already exceeded days ect.
- Force License Server Validation - If you want to
validate a license file
via a server first before it is recognized as a valid license
file, you can set the address to the corresponding web service
here. Use the Menu/Bar item "License Management"->"ASP.NET
Management/Activation" to create the corresponding service.
- Floating License / Concurrent User - If you want
to appy a floating license which is controlled via a global server or completely runs
on intranet you can set
the address to the corresponding service here.
- License Information - You can add custom license
information to the license file. Custom license information allows
a flexible license shema, modular licensing etc.. Your assembly can
access this information with the functions available in the
SDK libraries. Use the right mouse button to add assembly attribute
information. Your locked assembly automatically compares this
special information with the attributes of the calling assemblies.
Only an assembly with matching attributes is allowed to access your
The Protection Settings page allows you to enable a various of
- Obfuscation - IntelliLock provides thorough
class, type, and variable obfuscation. Obfuscation is the process
of making your source code more difficult (but not impossible) for
humans to understand. Obfuscation works by replacing the meaningful
names you assign to classes, methods, properties and variables with
meaningless ones. For example, it may replace a variable name of
"counter" with "A4DF3CV89G" - to humans these obfuscated names are
confusing and difficult to remember, but have no effect on the .NET
- Use Unprintable Characters - Uses unprintable strings to
obfuscate type and member names, but cannot be used if your
assembly must run as safe code.
- Generate Short Strings - Enable this option to generate short
strings for your obfuscated class and member names. This can reduce
the file size.
- Incremental Obfuscation - If you want IntelliLock always to
generate the same obfuscation strings for type and member names,
you need to enable this option.
- Create Mapping File - Creates a file which cross reference
unobfuscated names with obfuscated ones, which is used
by the Stack Trace Deobfuscator.
- Ignore InternalVisibleTo - Enable this option to obfuscate
internal classes and members, even if the InternalsVisibleTo
assembly attribute is used.
- Exclusions - If you want to prevent specific kind of types or
members from obfuscation, you can enable the corresponding option
here. Please note, IntelliLock offer declarative obfuscation as
- Inclusions - If you want to obfuscate all types or members
(including public one), you need to enable to corresponding option
- String Encryption - Disguises internalized text.
This encryption makes it much more difficult for a hacker to
attempt a code patch of your assembly, as he will be unable to
identify the text of messages or other useful strings, making
it much more difficult to identify where to patch your
- Advanced String Encryption - In addition to the
standard String Encryption above this option adds special anti
tampering code. Any try to recompile your code by any hacker tool
- Code Patch Protection - Enable this option to
prevent your source code from being tampered by hacker tools.
- Suppress ILDASM - Enable this option to suppress
disassembly to IL using the ILDASM.exe tool.
- Strong Name Removal Protection - This option
prevents your protected assembly from being tampered by hacker
- Encrypt IL Code - Enable this option to encrypt
the source code of your methods. At runtime the source code will be
decrypted in memory.
- Inject Invalid Metadata - Injects invalid
metadata. Most tools are unable to read assemblies with invalid
metadata. Of course, your assembly remains fully functional to the
- Control Flow Obfuscation - Mangles program flow,
making it extremely difficult for human eyes to follow the program
logic. Level 9 represents strongest control flow obfuscation.
The Finalization page shows you the current lock/protection
progress while IntelliLock processes your assemblies.