Sign In
  User Id 
  Password 

TheScarms(tm) AppSentinel Frequently Asked Questions

Operating System Related

What operating systems does AppSentinel run on?
AppSentinel runs on all versions of Windows: Vista, WinXP home and Pro, Win2K, WinNT, WinME, Win98 and Win95. AppSentinel is not intented to run on MAC or Linux operating systems. On Vista with UAC, you must set the user level security option to true.

What if the user upgrades to a newer version of Windows?
In most cases upgrading to a newer version of Windows will not effect registration. If it does, the user will need to re-enter the existing Registration ID.

If a user upgrades their version of Windows will the Evaluation ID, Machine ID and Registration ID remain the same?
Yes. All three IDs will remain the same. However, depending on the upgrade, the user may need to re-enter the Registration ID.

What access rights/privileges does AppSentinel require?
That depends on whether AppSentinel's user level security option is set or not. If it is not set (which is the default as well as the behavior with V2.1 and earlier) the user running an application incorporating AppSentinel must have sufficient privileges to write to the root, Windows, and System folders as well as the Hkey_Local_Machine Registry hive. If it is set, AppSentinel does not write to these locations. Thus, all users, even limited users under Windows XP, should have sufficient rights.

The AppSentinel DLL must be registered when it is installed. This typically requires administrative rights. The AppSentinel DLL must be registered by each user if it resides in a user specific folder.

What access rights/privileges does AppSentinelAdmin require?
The admin component does not read or write to the hard drive or Windows Registry.

What if AppSentinel is used on a PC shared by multiple users?
By default, AppSentinel insures that a registered version of your application is run on a given PC. If that PC is accessed by multiple users, all users will share the same set of stored registration values regardless of whether they use the same or unique user accounts. All users, will need sufficient access rights as mentioned previously.

However, if AppSentinel's user level security option is set, each user account will store registration data for your application separately. Thus, each user will need to register their copy of your application with their own unique registration ID1.

Hard Drive/Storage Related

What happens if the hard drive is formatted?
If the hard drive is formatted all registration information will be lost. When the application incorporating AppSentinel is reinstalled AppSentinel will generate a new Evaluation ID. The Machine ID will remain the same. The user will need to request a new Registration ID from you and re-register the application. Failure to do so will cause the application to expire after the number of trial days or runs that you specified.

Will AppSentinel work on mirrored drives?
Yes. AppSentinel will work on disk arrays configured as RAID Level 1 (mirrored). It will also work on other RAID levels as well.

Can someone use hard drive imaging techniques to copy software protected by AppSentinel to more than one computer?
AppSentinel looks at various pieces of hardware information which will differ from PC to PC. As a results, a disk image copied to another PC will fail (provided you do not use AppSentinel's option to store the machine ID).

How about network installs where my application is installed on a server?
The AppSentinel DLL and VB runtime files must be installed locally on each client workstation, regardless of whether your application's executable is installed locally or on a server share. Since AppSentinel is local to each workstation the Machine ID is workstation dependent. Thus, a unique Registration ID is required for each workstation.

Does AppSentinel work in a Terminal Server environment.
In a Terminal Server environment your application runs on a server and is accessesd by multiple users. Because AppSentinel is not installed locally on each PC acccessing your application it cannot distinguish between users and thus cannot prevent unregistered users from accessing your application. This, however, is consistent with most other similar products.

Programming Language Related

What language is AppSentinel written in?
The AppSentinel components are written in Visual Basic 6 Service Pack 6.

Will AppSentinel work in Visual Basic.NET or C# applications?
Yes. AppSentinel is an ActiveX DLL (in-process COM component) and can be incorporated into .NET applications. The .NET interoperability layer allows you to call such components. The trial download contains VB.NET and C# samples.

Register the AppSentinel DLL on your .NET PC (e.g. by running regsvr32.exe. In your .NET application click Project | Add Reference | COM, highlight the AppSentinel DLL, click Select then OK to create a reference to AppSentinel. If you get the "Could not find the primary interop assembly for COM component ..." dialog, click Yes.

Remaining calls to AppSentinel are similar to those under VB6. The trial download contains VB.NET and C# examples. The samples were written using VB.NET 2003 and V1.1 of the .NET Framework. They will also run using V1.0 of the .NET Framework by following the steps in the included ReadMe.htm file.

Why does AppSentinel work from the .NET IDE but not from the compiled .EXE?
.NET uses the COM Interoperability layer to work with ActiveX/COM components. When run from the IDE it creates a file called Interop.xxx.dll in your ...\obj and/or ...\bin folder. You need to copy this file to the folder where the compiled .EXE is: ...obj\debug or ...obj\release. Also, this file needs to be distributed with your application. Failure to do so may result in a Just In Time Debugging error.

Will AppSentinel work with Visual Basic 5? Can I view the samples with VB5?
Yes. AppSentinel can be incorporated into a VB5 project. Open the sample programs with VB5. If you get an "... Invalid Retained property ..." error when opening the samples in VB5, open the .VBP file with Notepad, delete the "Retained=0" line, save and close the file, then reopen the sample with VB5.

Can AppSentinel be easily integrated into Delphi?
AppSentinel is an ActiveX DLL (in-process COM component) whose methods can be called from Delphi applications or from any other language that lets you instantiate and call ActiveX components. Although the sample code and documentation is based upon Visual Basic and C#, it should not be difficult to translate it to Delphi. Because AppSentinel is VB6 based, the VB6 runtime DLL must be distributed with your application.

Can AppSentinel protect Microsoft Excel or Access Applications?
Yes. Microsoft Excel and Access applications can call COM components. Incorporating AppSentinel into these applications is similar to incorporating AppSentinel into a VB6 application. However, you must take steps to prevent the user from accessing your source code.

AppSentinel Version/Upgrade/Refund Related

What is the latest version of AppSentinel?
The latest version of AppSentinel is version 2.5.

How do I know what version of AppSentinel I have?
Right click the DLL in Windows Explorer and select the version tab.

I want to offer my customers free upgrades to my application. Can this be done without causing conflicts with AppSentinel?
Yes. Upgrades to your program will not cause any conflicts as long as you use the same AppSentinel settings (FileMask, TrialRuns,...). However, if you upgrade the version of AppSentinel itself you may need to make some changes since not all versions store the same registration data in the same manner.

How do I get updates to AppSentinel? Are they free?
Upgrades are free to users who have purchased AppSentinel by contacting TheScarms. You will be sent the latest release version and will be asked to download the latest trial version since it contains the updated samples and documentation. Modifications to your application may be required to incorporate the latest features or remove calls to depricated functionality. Also, you will need to distribute and register the new DLL. You must provide me with the same email address that you used to when you originally purchased AppSentinel (you do not need to use the same address).

What about upgrades from the Lite version to the full version of AppSentinel?
Simply pay the difference in price and you will be sent the full version. No programming changes are required. You must provide the same email address that you used to when you originally purchased AppSentinel.

How do I return AppSentinel for a refund if it doesn't suit my needs?
Unfortunately, AppSentinel cannot be returned for a refund. Once you have received the paid version it is not possible to verify that you will not use it. Therefore, your payment cannot be refunded. You are encouraged to download and try out the trial version prior to purchasing AppSentinel.

Is V2.5 compatible with prior versions?
Many changes were made to enhance functionality. AppSentinel has a new interface and its binary signature has changed. You need to register the new version of the DLL and, while not required, unregister the prior version. If you used early binding, you need to drop and re-reference the AppSentinel component in your source code.

AppSentinel no longer works with registration information files used by Version 1.0. Also, the stored registration information has changed from all prior versions. Using the same FileMask and RegistrySubKey values in V2.5 as you did with V1.5 - V2.1 will result in the error:

           "Missing First Run Date. (1205)"

If you then re-run your application using AppSentinel V1.5 - V2.1 you will receive error 134, "Registration ID, Machine ID and Evaluation ID do not match." You will receive this error whether the application was registered with the earlier version or not.

With V2.5, the Machine and Registration IDs are not compatible with earlier versions. If an application was registered, its status will now change to evaluating. The FirstRunDate, LastRunDate, DaysLeft, and RunsLeft values will be changed and stored. Additionally, the Registration ID will be cleared and the Machine and Evaluation IDs will be changed.

Thus, it is recommended you use different values for the above properties or delete the old registration data.

Can I convert registration data from a prior version to V2.5?
Data from AppSentinel V1.0 - V2.1 can be converted to V2.5 using the conversion DLL supplied. As with AppSentinel, there are trial and paid versions of the DLL and paid versions can only be used with their matching AppSentinel DLLs. Also, the conversion DLL is a COM component that must be registered. The sample included in the trial download shows how to call this component.

Once registration data is converted, you can no longer reference it using your previous version of AppSentinel. Doing so will result in the error "Registration ID, Evaluation ID and Machine ID do not match (134)."

AppSentinel Feature Related

What's the difference between AppSentinel Lite and AppSentinel?
AppSentinel Lite does not allow you to limit your trial period by the number of runs of your application. Also, AppSentinel Lite does not support the Application Rental functionality. Setting the TrialRuns or ApplicationRental properties has no effect. These values are ignored.

How do I know another AppSentinel buyer will not create Registration IDs for my Application?
AppSentinel and AppSentinelAdmin DLLs are sold in matched pairs. Each pair creates different Registration IDs that are unique to that pair. A Registration ID created by AppSentinel buyer #1 will not work with the copy of AppSentinel purchased by buyer #2. This security feature is only incorporated in to the paid version of AppSentinel. Registration IDs created by one copy of the trial version will work with all other trial version copies. However, Registration IDs created by the trial version will not work with the paid version of AppSentinel.

Does AppSentinel support temporary registration such as for an Application Rental or Application Subscription?
Yes. AppSentinel can be used to expire your application at regular, pre-determined intervals. Your users will have to re-register to extend your application's availability for another subscription period. AppSentinel provides a "grace" period so that users can register before the current subscription period expires to insure there is no gap in your application's availability.

Has AppSentinel's handling of Application Rental functionality been improved?
Yes. While it was possible to use AppSentinel for application rental with V2.1 and earlier, doing so was somewhat cumbersome. With V2.5 application rental is supported natively making it much simpler and more robust.

What if I switch between Application Rental and Evaluation modes?
You can switch between modes easily via the ApplicationRental property. However, If you switch to ApplicationRental mode and also change the TrialDays property, the TrialDays change does not take effect until the original period is over and the user re-registers.

My application uses Application Rental mode and expires at regular intervals. Can I stop it from expiring?
Yes, When your application is in a "registered" state, set the ApplicationRental property false. However, this requires a code change in your application. If you think you may need to do this at some future point, you can have your application read this value from a configration file and set it programatically when your application loads. This way all you need to do is update your configuration file.

Can AppSentinel be set up to generate Registration IDs from an ASP enabled web site and deliver them in a web page or email? I don't want to create each Registration ID and send it to the buyer. I want the user to be able to register and use their product right away.
Your buyers should be able to use your application immediately. They must, however, register prior to the expiration of the number of days or runs that you set.

It is possible to invoke AppSentinelAdmin from an Active Server Page or ASP.NET application to generate Registration IDs and the sample programs illustrates this. However, with AppSentinel versions 2.1 and prior the license agreement prevents you from doing so on a publicly available web site (your application can, however, programmatically connect to the internet, run the Admin program and register itself. This is allowable since there is no user interface and the Admin functionality is not exposed to the public.)

How sensitive is the Machine ID to hardware changes? If a user adds memory or changes his sound or video card will the Registration ID still work?
Adding memory or changing the sound card will not effect the Machine ID. The Registration ID will still work. AppSentinel only uses video card information if it cannot generate a Machine ID using its normal hardware signature. This condition should never occur. However, in this rare event, a new Registration ID is required. You can also instruct AppSentinel to calculate the Machine ID once and store the ID instead of calculating it every time it is instantiated.

What fields need to change to allow multiple applications to use AppSentinel on a single machine?
The FileMask and RegistrySubKey properties must change. The suggested FileMask length is 10 characters. AppSentinel will truncate or pad it to 10 characters. When padding is necessary a portion of the Machine ID is used. For best result, use a completely unique 10 character FileMask in each application.

"RegistrySubKey" is comprised of your company's name and your application's title in the form: "Company Name\Application Title". There are no limits on the length of the "Company Name" or "Application Title" values. "Company Name" is typically the same across all your applications. "Application Title", however, must be unique. Further, the backslash ("\") is required between the two values and there should be only one backslash used.

Is there a way to use AppSentinel to unlock different levels of a product. Ex. I have a product with different editions (bronze, silver, gold). Can I use it to unlock certain features?
You can use AppSentinel to unlock different levels of a product using the following approach. Define a variable whose value indicates the level the user has access to. Store this value in the Windows Registry or a configuration file taking precautions, such as encryption, so that the user cannot easily change it. When your application starts, retrieve the value and use it to set AppSentinel's FileMask and RegistrySubkey values. This forces a different Evaluation ID to be generated for each feature set level. The user will need to be registered for the appropriate level. Your application can use the stored value to determine what functionality to expose.

Can AppSentinel be used to create trial versions of ASP/ASP.NET applications?
AppSentinel can be used to create a trial version of your ASP or ASP.NET application that expires after a certain time provided your application uses a server side DLL into which you can incorporate AppSentinel. You incorporate and invoke AppSentinel just as you would in a client side application.

There are two issues to be aware of. AppSentinel should not be instantiated in your Application Object. It must be instantiated and disposed with each page or Session. Also, AppSentinel writes to the root, Windows and System folders as well as the Registry. It must have sufficient permissions on the web server to do so.

Can registration information be transfered from one PC to another?
Yes. It is possible to transfer registration information from a legitimately registered application on one computer to a second computer. AppSentinel contains password protected functionality to export and import registration data. The application on the old computer must be registered and the application on the new computer must be in evaluation mode. Once registration data is exported from the old computer, that application is disabled.

Can I now decide to use the MAC address in an application that is already registered?
When an application is registered its Registration ID is based on a specific Machine ID. If you update your application and change AppSentinel's MAC address setting, the Machine ID will change invalidating the Registration ID.

AppSentinel DLL Related

Is it possible to rename the AppSentinel DLL?
Yes. In fact, it is recommended. The DLL should be renamed when you distribute it with your application. Internally within your application you continue to reference the DLL as shown in the sample programs regardless of what you rename it to. You must rename the DLL before you register it on the target PC.

What files need to be distributed with AppSentinel?
The VB6 runtime (MSVBVM60.DLL) must be distributed. This DLL depends on several standard Windows DLLs. A redistributable version of the runtime is available from Microsoft at www.microsoft.com/downloads. .NET applications must also distributed the Interop.xxx.dll created when you compile your application.

Where should the AppSentinel DLL be installed?
The recommended location is the Windows System folder. That way all users of your application on a given PC have access to it regardless of whether they use the same or separate user accounts.

What permissions are needed to register the AppSentinel DLL?
Since the DLL is a COM component it must be registered, typically with regsvr32.exe. The installer program (or person) must have administrative rights. Under Windows XP for example, a limited user will not have the necessary authority.

AppSentinel Errors

Why does AppSentinel always report the TotalRuns as 1?
This can occur if you end your application without properly terminating AppSentinel first. In VB6 you must set the variable referencing AppSentinel to Nothing prior to ending your application: Set mobjAppSentinel = Nothing.

In VB.NET you must issue these commands before ending your application: System.Runtime.InteropServices.Marshal.ReleaseComObject(mobjAppSentinel)
mobjAppSentinel = Nothing.

Similarly, in C#: System.Runtime.InteropServices.Marshal.ReleaseComObject(mobjAppSentinel);
mobjAppSentinel = null;.

Also, you should instantiate AppSentinel at the start of your application and allow it to exist until your application terminates. If it is destroyed and recreated during a single session of your application the TotalRuns of your application reported by AppSentinel will be higher than the true number causing your evaluation period to prematurely expire.

I converted my application to use a newer version of AppSentinel now it displays the: "Registration ID, Evaluation ID and Machine ID do not match (134)" error, why?
This occurs for 2 main reasons: 1) The Registration ID was created with a pre V1.5 version of the AppSentinelAdmin DLL and used with the free trial version of AppSentinel DLL. Starting with V1.5 the download contains trial versions of AppSentinel, AppSentinelAdmin and Control Panel. RIDs produced by these components do not work with the purchased components.

Secondly, the Machine ID and Registration ID logic may have changed between versions.

What else causes the "Registration ID, Evaluation ID and Machine ID do not match (134)" error?
If an invalid Registration ID was entered by the user and the registration data was saved this can occur in versions V2.1 and earlier (see the When does AppSentinel store registration data question).

Say the user enters an invalid RID into your registration form, your code calls CheckRegistration, finds the invalid value, issues a message and either explicitly saves the registration data or does so implicitly by setting the object variable to Nothing. The bad RID will be stored.

The next time you call the GetRegistrationInfo/CheckRegistration methods you will get this error. You should always show your registration form in this case so the user can enter the correct RID.

Can anything else causes the "Registration ID, Evaluation ID and Machine ID do not match (134)" error?
Yes, in versions V2.1 and earlier, if your application is properly registered and you instantiate AppSentinel, set the FileMask and RegistrySubKey properties, then set the variable referencing AppSentinel to Nothing or otherwise terminate AppSentinel without calling GetRegistrationInfo. You may get this error the next time your application calls CheckRegistration.

Why do I get an "Object doesn't support this property or method" error?
Your AppSentinel or AppSentinelAdmin DLL is not registered. Register it using Regsvr32.exe.

Why do I get "Permission Error (70)" when attempting to instantiate AppSentinel?
AppSentinel may be installed in a folder that is not accessable to the current user due to security. Example: if AppSentinel is installed in a folder specific to user 1, user 2 may receive this error if they do not have access to that folder.

Why do I get "Error Saving Registration Information (1303)"?
AppSentinel is not able to write to a required hard drive or Windows Registry location because the current user does not have sufficient write permission. You can consider granting write permission or using AppSentinel's user level security option instead.

What if I use V2.5 and use registration files from an earlier version?
You may get the follwoing error:

"Missing First Run Date. (1205)"

You need to use different values for the FileMask and RegistrySubKey properties or delete the old registration data. If an application was registered, its status will revert to evaluating.

AppSentinel Miscellaneous

Registration IDs are long. Can they be shortened somehow?
Many users hash the various IDs to shorter values when they are displayed to the users. However, you must insure that the algorithm used maintains their uniqueness.

How do I remove old registration information created during testing?
Call the DeleteRegistration method after setting the FileMask, RegistrySubkey UseMACAddress, RememberMID and PriorVersion (V2.1 and earlier) properties to the same values as when the registration information was created.

It is hard to distinguish between Zeros and O's or Ones and L's in the IDs. What can be done?
Switch the font used to display the IDs on your Registration form to Courier New.

Some packages similar to AppSentinel only require a few lines of code. Why does AppSentinel require more?
To simply test if an application is registered or not you can do it with a few lines of code. However, developer want more than registered | not registered functionality. Other features require additional code. Much of the sample code is dedicated to creating a Registration form, displaying it and giving the user the ability to re-register once the application has expired.

Have you ever had a situation where the Registration ID did not unlock the software?
There have never been any reported instances where the registration ID did not unlock the software. There have been cases where the user entered the wrong ID, transposing zeros for O's, I's for ones,... This may result in a 134 error machine ID, evaluation ID, registration ID do not match. This is by design to prevent an invalid RID from unlocking the software.

What precautions should I take when installing the paid version, ex. uninstalling the trial version?
It is recommended you unregister the trial version after using its DeleteRegistration method to remove any existing registration information. If you do not do this you will need to use different FileMask/RegistrySubkey values otherwise AppSentinel will report a "134" error stating registration information does not match.

When does AppSentinel store registration data? Will AppSentinel store invalid data?

With version 2.1 and earlier information is stored when you explicitly call the SaveRegistrationInfo, GetRegistrationInfo or Register methods and whenever you destroy the reference to AppSentinel.

With version 2.5 and later information is stored when you call the CheckRegistration and Register methods and whenever you destroy the reference to AppSentinel.

When information is saved it is stored whether valid or not. If the user enters an invalid registration ID and the data is saved the invalid RID will be stored. The next time you validate the registration data you may receive error 134 - "Registration ID, Evaluation ID and Machine ID do not match." This is by design to prevent the attempted use of unauthorized RIDs.

AppSentinel's price has increased, why?

AppSentinel's price has increased modestly. There have been significant increases in its functionality, robustness, and ability to withstand attempts at cracking and/or patching. Despite its added features, incorporating AppSentinel into your software has been greatly simplified.

A single, one time purchase of AppSentinel allows you to protect an unlimited number of your applications. There is no limit on the number of times you can distribute AppSentinel, the number of Registration IDs you can generate, or the number of applications you can incorporate AppSentinel into. AppSentinel can be used to protect multiple applications on the same PC.

The purchase price of AppSentinel is roughly equivalent to two hours of a programmer's time and typically pays for itself after one or two sales of the typical desktop application!

Who uses AppSentinel? What is your customer base like?
AppSentinel has been sold to developers throughout the world and has been incorporated into over a thousand different applications written in Delphi, VB 6.0, VB.NET, C#, Excel and Microsoft Access. The number of installs of applications incorporating AppSentinel is in the hundreds of thousands! Many of these applications run under versions of Windows which use varied regional and language settings such as Chinese, German... AppSentinel is time and user tested. Try it out for yourself!


1 On older operating systems (Win95, Win98, WinME) some folders used to store registration data may not exist resulting in less redundancy of stored data and some data storage locations may be shared between users.

 

 
TheScarms(tm) AppSentinel
Copyright © David Scarmozzino
All Rights Reserved
User Feedback: Comments: 1 Items to Show:     

     
Id:  1 Posted:  6/20/2007 7:20:17 AM By:  ANTONIOGAMEIRO
I would appreciate if you could send me more information on how a user can tranfer his software registration from one computer to the other. I tried to run the code (VB 6.0) and I get the message :
Unkown Parameter (1451).

Regards,
Antonio Gameiro Lopes
 
You must log in to post feedback.
Comment: