Rubrik: HTML/Internet/Netzwerk · Netzwerk | VB-Versionen: VB4, VB5, VB6 | 08.07.01 |
Aufruf von Netzlaufwerk aus verhindern Ein kleiner Trick und Ihre Anwendung lässt sich nicht mehr von einem Netzlaufwerk aus starten. | ||
Autor: Dieter Otter | Bewertung: | Views: 19.273 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Sicherlich kenn Sie das auch: Sie haben eine netzwerkfähige Anwendung erstellt, z.B. eine Adress-, Vereins oder Lagerverwaltung. Nun möchten Sie natürlich, daß der Anwender eine entsprechende Netzlizenz erwerben muss, um auf die gemeinsamen Datenbanken aus einem lokalen Netzwerk zugreifen zu können.
Vorausetzung ist allerdings, daß in der Einzelplatzversion das Verzeichnis, in welchem die Datenbanken verwaltet werden, fest eingestellt ist. In der Netzwerkversion hingegen, kann der Anwender den Datenpfad frei einstellen.
Nehmen wir an, der Anwender hat nur eine Einzelplatz-Lizenz erworben. Nun könnte er ja auf die Idee kommen, die Anwendung zunächst auf jeden Arbeitsplatz zu installieren, so daß auf den jeweiligen Arbeitsplätzen alle benötigten Systemdateien installiert und vorhanden sind. Starten tut der Anwender Ihre Anwendung aber über ein Netzlaufwerk!
Dann haben Sie ein Problem: Da der Programmpfad (App.Path) nicht auf den jeweiligen Arbeitsplatz verweist, sondern immer auf das Verzeichnis, aus welchem der Programmaufruf erfolgte, ist somit der gemeinsame Zugriff auf die Datenbanken gewährt - und eben das wollten Sie doch verhindern!
Ein kleiner Trick schafft hier Abhilfe: Beim Programmstart überprüfen Sie einfach, ob es sich bei dem Pfad, aus welchem die Anwendung gestartet wurde, um ein Netzlaufwerk handelt. Ist dies der Fall, zeigen Sie einen entsprechenden Hinweis mit der Aufforderung zum Erwerb der Netzwerk-Version.
Und so geht's:
Option Explicit ' zunbächst die benötigte API-Deklaration Private Declare Function GetDriveType Lib "kernel32" _ Alias "GetDriveTypeA" ( _ ByVal nDrive As String) As Long ' Prüfen, ob die Anwendung von einem Netzlaufwerk ' aufgerufen wurde Public Sub Main() Dim DriveType As Long Dim NoStart As Boolean ' Beginnt AppPath mit "\\", so wurde die ' Anwendung direkt auf einem anderen Rechner gestartet NoStart = (Left$(App.Path, 2) = "\\") If Not NoStart Then ' Laufwerks-Typ abfragen ' 4 = RemoteDrive (Netzlaufwerk) NoStart = (GetDriveType(left$(App.Path, 1) + ":\") = 4) End If If NoStart Then MsgBox "Die Anwendung muss lokal gestartet werden!" & _ vbCrLf & _ "Um die Anwendung in einem Netzwerk auszuführen, " & _ "müssen Sie eine Netzwerk-Lizenz erwerben!" End End If End Sub