|
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.
|