This page explains licensing structures and some of the frequently asked questions.


Some of the main features of our product licensing include:

  • All versions of DicomObjects and XdsObjects whether for evaluation, development or user deployment, are based purely on the licence key entered at activation time

  • The licence may be changed or updated after the initial activation, enabling say an evaluation version to be changed into a full version by removing the evaluation licence and activating a new licence with a different key

  • Activation keys can be supplied as single-machine or multi-machine variations, and can have various limitations. In all cases though, the number of activations is recorded by Medical Connections

  • Activation methods:

    • Normal “on-line” activation - an Internet connection is required from the machine
    • Off line activation - Web activation from a second internet accessible device
    • Automated registration for end user online machine in application source code
    • Automated registration for end user offline workstations in application source code
    • In extreme cases we can also activate over the phone although this is not a preferred method
    • For restricted applications such as viewers distributed on CDs, an alternative method can used, tied to the signature of your application
  • There are 3 categories of licence:

    • Evaluation
      • Good for 60 days as currently
      • Full functionality
      • One reminder prompt per day
    • Development
      • Good for 2 years (renewable)
      • Full functionality
      • A random reminder prompt that it is not for production use
    • End-user
      • Functionality controlled by licence key
      • No expiry (unless requested by developers)
      • No reminders (unless licence is expiring)
  • All developer and end-user licences will be specific to a particular developer/organisation, and activations based on them will be traceable by Medical Connections.

  • End-user licences will normally be single-use

  • Customised licence scenarios may be possible (e.g. concurrent use or time limited)

  • Whilst “normal” activation will be interactive, it is possible to initiate activation programmatically for use such as web servers where interactive use may not be possible

  • Whilst this system will keep an accurate record of activations, it does not replace the human element in licencing, and flexibility for trial installations, redundancy or even errors will remain as ever



How do I activate on a machine without a user interface such as a web server where I upload only via FTP?
You can use the DicomObjects.DicomLicense.ActivateOnLine method to pass the activation key
I was expecting to see the activation screen when the program started but it appears when the program tried to use DicomObjects.
By design, the activation is triggered only when one of the controlled features of DicomObjects is first used - this is deliberate to avoid problems with design environments. You can trigger the activation screen yourself if you wish by calling DicomLicense.Dialog.ShowDialog().
What should I enter in the "Customer Info 1" box?
This is your traceable name that we will issues all your licences under. It may be your name / company name or in some cases a serial number as long as we can recognise who is registering.
What should I enter in the "Customer Info 2"box?
Any extra information that is relevant to the registration. If the licence is a replacement then enter "replacement" in this box.

Service & Web Server Issues

Why does my project work OK when debugging, but I get an exception (exact text varies with version) when I run on a live IIS server?
This is because ASP.NET code runs under the [local]\ASPNET account not [local]SYSTEM (as other services do), and that account may not have access to the appropriate registry hive where the registration information is stored! This problem should not occur in the "In-house" scheme, so if you see it, then please do let us know!
What happens to the reminder screen when run as a service?
The reminder screen will only display for one minute and if not cleared by the user after this time, it will generate an exception (which may stop your program), but it will still count as having been displayed, so it will not show (or in this case interrupt your program) again until the next appropriate interval (the next day for evaluation or 10 days for development copies). So, for services under development, I would recommend that you allow them to interact with the desktop, but even if you don't, the worst you will get is the service failing to start once every 10 days - just enough to discourage clinical use!!!!
What happens if I activate more than once on the same machine?
Don't worry - this only counts as one activation, so there is no incensing problem. If the licence is still in place, then this will be located and the activation call will return immediately, but if the licence has been deleted, then there will be a delay of a few seconds whilst the incensing server is contacted, so it is not a good idea routinely to clear licences and to re-activate at every run!

Licensing & Control

Where am I going to be able to track all my licences?
On each new registration an Email will be sent to you.
I'm using HASP keys to protect my software. I'm using it like a licencing tool and also protection (encryption). The keys I'm using have memory, so I can save the activation key in the HASP. So, my question is if there is any way to make your licencing to search the HASP (by code) to get the licence number and not show the activation form? By this I mean write a routine that when the activation is needed look automatically in the HASP.
You should be able to do this directly yourself, using the Activate methods.
Does this licence protection system stop the end user installing the software on multiple machines?
It can do, but that is not the default behaviour. By default, you will have a small number of end-user keys, each of which is good for multiple activations on different machines. Therefore, using this system, end-user activation is recorded but not controlled. The system is however very flexible, and if you wish to have a stock of single-activation licences for end-users systems, then just ask.
What is the difference between a workstation and server system licence?
The difference is that a workstation-only licence does not allow the system to function as a general purpose SCP. The Listen method and receipt of C-STORE and C-ECHO operations are still permitted, as these are required for a workstation using C-MOVE, but receipt of any other operations on a system with just a workstation licence will generate an exception.
Can a developer and end-user licence co-exist?
Yes, multiple licences can co-exist, but only one licence can be active at any time. This can be controlled using the DicomLicense.CurrentLicense static property.
What will happen if I need to have two different products installed in the same machine for demo? Can two end-user licences co-exist?
They can co-exist, but cannot necessarily be used to control access to your products, as the licences are for DicomObjects itself, not for a particular product. If you wish to ensure that your product only uses YOUR licence, then you can check the VendorID product of each licence in the InstalledLicenses collection, and set CurrentLicense to the one you choose (or null if you wish to disable yourself!)
How am I going to get each licence? Per request or are you going to have a web page where we can pay the developer licence fee and get the licence key code?
In general, developers will have a small number of licence keys (one for development, one for workstations and one for servers) which will be used with multiple activations. Charging will then be on the basis of the number of licences installed.
How about the demo keys?
There will be a small number of generally used evaluation keys for DicomObjects itself (sent by mail to those that download it), and these will probably change every month or so. Keys for your own product evaluations can be created on request.
Is it possible to have a "mobile" licencing scheme, with a licence tied to a USB dongle instead of to one machine?
This will be considered as an enhancement if there is sufficient demand.
Is it possible to uninstall/deactivate the licence?
Individual licences may be deleted from a machine using DicomLicense.Delete, or all can be removed using the static DicomLicense.DeleteAll method.


How much effect will this licencing schema have on the speed of my application?
Performance effects should be minimal - the licence decryption and checking is only performed the first time that each licenced functionality (read, write, listen etc.) is performed in a program.



Can I disguise the use of DicomObjects in my product, or will users doing an activation see that DicomObjects is being used?
Yes, by in any of 4 ways:
  1. Setting the DicomGlobal.ProductName property to your product name, will cause this to appear in the all the activation dialogues in place of “DicomObjects”, but the logos etc. will be unchanged.
  2. You can change the values of the properties of the static DicomLicense.LicenseDialog object prior to any time that it could be displayed, and this include changing the logo.
  3. You can derive a class from LicenseDialog, and set it up any way you wish.
  4. You can use ActivateOnline and ActivateOffline yourself, and ensure that you have a valid licence in CurrentLicense before ever using any controlled functionality

The only exception to these possibilities is if a trial or developer licence is in use, in which case the original dialogue box, showing DicomObjects and Medical Connections will always be displayed.

Licensing related articles