CodeMeter is driverless but we recommend you install the CodeMeter runtime with administrator rights. How does this fit together?
Driverless isn’t really driverless
From a purely technical viewpoint, a driverless product can’t exist: without a driver, a hardware device can’t be accessed. However, there are driver classes available which devices can use instead. The manufacturer doesn’t supply the core driver though, which means it must be installed separately. Examples of available driver classes include Human Interface Devices (HID) such as a mouse, and Mass Storage Devices such as a USB memory stick. CodeMeter uses the Mass Storage Devices driver which is why it is described as driverless.
By using the available Mass Storage Device driver, CodeMeter gives you maximum protection of investment. A dongle with a proprietary driver makes you dependent on the good will of your supplier: when a new operating system is released, it’s up to the supplier to decide whether to update the driver or not. Not so with CodeMeter. Be it Windows XP Service Pack 2, Windows Vista or Windows 7 in the past, or Windows 8 in the future, it’s like the classic tale of the tortoise and the hare: CodeMeter wins every time because Wibu-Systems can always say “we got there first”.
CodeMeter also provides a major benefit during installation. You can attach a CmDongle to any computer and use it straightaway without administrator rights. This means you can start your software directly from CD or install a mobile version of it on a CmDongle with flash memory. Your software and license are then stored on the same device. And you can configure the CodeMeter runtime not to leave anything behind on the computer you’ve used.
How is the CmDongle accessed?
A runtime called CodeMeter.exe manages access to the CmDongle. CodeMeter.exe is usually installed on the PC as a service. If you are using a mobile version, your application can also automatically start CodeMeter.exe in user space (without administrator rights). In this case CodeMeter.exe must be stored together with a configuration file in the same directory as the protected application.
You might want to know why you can’t directly access the CmDongle. There’s probably no reason why you can’t if this is the only application on the PC and you’ve configured it and are sure no other user installs any other software on the computer. This is generally the situation with embedded devices, and for these we provide a CodeMeter compact driver.
For a standard Windows PC though, the preferred choice is usually the CodeMeter runtime which offers the following functionality:
Encrypted communicationSimultaneous access
License counting on a terminal server
Compatibility with new construction types
CodeMeter provides two security shells to protect your software from record/playback driver level hacks. P-RID (Probabilistic Required Information Decryption) weaves random data into the encryption of the inner wrapping making it impossible to create a fully functional hack from a single recording of the software traffic. A hacker doesn’t usually get this far though as CodeMeter.exe encrypts the communication with the CmDongle to stop data being recorded.
A single CmDongle can protect several applications at a time. This could be an application (exe) and library (dll), or applications from different software vendors. CodeMeter.exe builds an encrypted channel to the CmDongle and assigns the licenses to applications. An important security feature only allows one simultaneous encrypted communication channel to the CmDongle. The number of times this channel can reinitialized within a short period is restricted. CodeMeter.exe prevents anyone from listening in on your encrypted data.
CodeMeter.exe also takes over management of software-based licenses (CmActLicenses). If your software allows both software-based CmActLicenses and CmDongles, CodeMeter.exe automatically checks which method is used to store the license.
If a CmActLicense is used, CodeMeter.exe must run as a service to make sure the license activation information is hidden on the PC. It must also run as a service to read and evaluate the fingerprint which ties the license to the computer. Administrator rights are only required to install the CodeMeter runtime. Your protected software also starts in user space and the CodeMeter checks it is licensed to run on the hardware.
If a CmDongle is used, CodeMeter.exe can either be installed as a service (recommended) or started automatically in user space by the protected application.
CodeMeter also takes over network license management on both the client and the server. Your software first asks the local CodeMeter.exe if a license exists on the client. If it doesn’t (and you’ve configured network licenses), CodeMeter.exe automatically searches the network for a license server.
CodeMeter.exe automatically allocates the network licenses on the license server if you must have previously installed the CodeMeter runtime on the server and enabled the “release licenses to network” function (Option: “Run as server”). Of course, only licenses which are network licenses can be activated. Single user licenses (License Quantity = 0), for example, can only be used on the local computer.
The true strength of CodeMeter is demonstrated by a terminal server. If CodeMeter.exe is running locally, a terminal server can count the number of licenses either by counting the number of launched applications or the number of sessions (i.e. connected computers). CodeMeter.exe automatically ensures no license violations occur due to the terminal server.
What happens when your software crashes? The customer restarts it. This might cause problems though if the license is still active. Here too, CodeMeter.exe offers automatic assistance. It monitors the relevant processes and deactivates the licenses when the corresponding processes crash. It doesn’t matter if the licenses are local or on the network.
CodeMeter is multiplatform. Even if your software runs on Windows only, the user can set up a license server on a Linux machine. The Windows CodeMeter.exe is fully compatible with the CodeMeterLin daemon on Linux, and the Mac OS and Sun Solaris versions of CodeMeter.
New construction types
CodeMeter is undergoing constant development. The CmDongle is currently available in SD or CF card format. Nobody can say today which additional construction types and interfaces CodeMeter will support in 5 years time.
Nevertheless, CodeMeter provides full investment protection here too: All you need to do to use another construction type is update the CodeMeter runtime (and this might not even be necessary). Your software doesn’t have to be recompiled at all.
CodeMeter compact driver
Wibu-Systems provides a CodeMeter compact driver for large volume embedded devices. The CodeMeter compact driver replaces the CodeMeter runtime allowing you to directly access the CmDongle from your application or CmActLicense. The API is fully compatible with the CodeMeter runtime but only a subset of the functions can be used.
The CodeMeter compact driver is available as ANSI C source code which you can compile for your target system. An important feature of the CodeMeter compact driver from Wibu-Systems is its modular design which allows it to be streamlined to your project. When installed on your own operating system or an embedded operating system, it is the ideal alternative to the CodeMeter runtime.
A version with simultaneous operation of the CodeMeter runtime and CodeMeter compact driver on a PC is planned.