Home All Groups Group Topic Archive Search About

How to control the number of installed front end files (*. mde)

Author
21 Oct 2005 6:21 PM
jleal
Good day: 

I am developing a database in Access 2003 that will be put in a server. In
that server I will install the data (back end) and the *. mde  file (front
end), later I will install in more 4 computers the front end (*. mde file).
How I can control the number of users  that accede to the database, because
the supply of the database includes 5 licenses? What I intend to do is to
impede the installation of more front ends files in other computers. 
I call your attention for the fact, that I created a users table and users
groups table in the database. I am not using the users and users groups
facilities of the access.
If it was possible to have a global variable to be increased whenever an
users acceded to the database had the solution for the problem, only that I
think each computer with his *. Mde file, have there own global variables
values

I thank, at once your help. 

With the best regards, 
José Leal

Author
21 Oct 2005 9:38 PM
Chris Mills
You can count the Front-End PC's by getting and storing the Hard Drive volume.
Precisely how you implement that (and secure the information) is up to you.

Of course, this wont work with Terminal Server, which doesn't really have
separate front-end PC's.

The Volume ID is randomly generated and not necessarily unique. However the
chances of duplication are infinitesimal.

Another way is to record the network card MAC address (or Permanent Node
Name), which I don't have code for but here's a post which does
http://groups.google.com/group/comp.databases.ms-access/browse_thread/thread/82b58d5ccad5b4c0/2c6b3e766b7f0edb?q=network+adapter&rnum=1#2c6b3e766b7f0edb

For hard disk volume (which works well for me except TS):
-----
Public Function GetVol() As String
Dim l As Long
Dim RootPathName As String
Dim VolumeNameBuffer As String * 255
Dim VolumeNameSize As Long
Dim VolumeSerialNumber As Long
Dim MaximumComponentLength As Long
Dim FileSystemFlags As Long
Dim FileSystemNameBuffer As String
Dim FileSystemNameSize As Long

RootPathName = "C:\"
VolumeNameBuffer = Space(255)
VolumeNameSize = 255
VolumeSerialNumber = 0
l = GetVolumeInformation(RootPathName, VolumeNameBuffer, VolumeNameSize,
VolumeSerialNumber, MaximumComponentLength, FileSystemFlags,
FileSystemNameBuffer, FileSystemNameSize)
If l = 0 Then
    GetVol = "0"
Else
    GetVol = Hex(VolumeSerialNumber)
End If

End Function
-----
Declare Function GetVolumeInformation Lib "kernel32" Alias
"GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long,
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal
nFileSystemNameSize As Long) As Long
-----
Author
21 Oct 2005 10:01 PM
jleal
Good day,Chris:

I am going to try it. Thanks.

Best regards,
José Leal

Show quoteHide quote
"Chris Mills" wrote:

> You can count the Front-End PC's by getting and storing the Hard Drive volume.
> Precisely how you implement that (and secure the information) is up to you.
>
> Of course, this wont work with Terminal Server, which doesn't really have
> separate front-end PC's.
>
> The Volume ID is randomly generated and not necessarily unique. However the
> chances of duplication are infinitesimal.
>
> Another way is to record the network card MAC address (or Permanent Node
> Name), which I don't have code for but here's a post which does
> http://groups.google.com/group/comp.databases.ms-access/browse_thread/thread/82b58d5ccad5b4c0/2c6b3e766b7f0edb?q=network+adapter&rnum=1#2c6b3e766b7f0edb
>
> For hard disk volume (which works well for me except TS):
> -----
> Public Function GetVol() As String
> Dim l As Long
> Dim RootPathName As String
> Dim VolumeNameBuffer As String * 255
> Dim VolumeNameSize As Long
> Dim VolumeSerialNumber As Long
> Dim MaximumComponentLength As Long
> Dim FileSystemFlags As Long
> Dim FileSystemNameBuffer As String
> Dim FileSystemNameSize As Long
>
> RootPathName = "C:\"
> VolumeNameBuffer = Space(255)
> VolumeNameSize = 255
> VolumeSerialNumber = 0
> l = GetVolumeInformation(RootPathName, VolumeNameBuffer, VolumeNameSize,
> VolumeSerialNumber, MaximumComponentLength, FileSystemFlags,
> FileSystemNameBuffer, FileSystemNameSize)
> If l = 0 Then
>     GetVol = "0"
> Else
>     GetVol = Hex(VolumeSerialNumber)
> End If
>
> End Function
> -----
> Declare Function GetVolumeInformation Lib "kernel32" Alias
> "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal
> lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long,
> lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
> lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal
> nFileSystemNameSize As Long) As Long
> -----
>
>
>