0003 UAC in Vista und Winows 7
![]() |
Das leidige Thema des UAC
(User Account
Control, oder zu Deutsch:
Benutzerkontensteuerung) beschäftigt uns VB-Programmierer
immer wieder; haben wir doch plötzlich nicht mehr das
Recht Dateien in unserem Applikationsverzeichnis zu
ändern, wenn die Installation unter "..\Program Files\.." erfolgte
- und das Registrieren von DLLs oder OCXs zur Laufzeit ist auch
nicht mehr so leicht wie früher... Private Declare Function IsUserAnAdmin Lib "shell32.dll" () As Long ' Hat der Benutzer Administrator-Rechte? Public Function isAdmin() As Boolean If isSystemNT Then ' Siehe Tipp 0001 isAdmin = CBool(IsUserAnAdmin()) Else ' auf Einzelbenutzersystemen ' hat der User immer Adminrechte isAdmin = True End If End Function Lösungsansatz: glbDataPath = getSpecialFolder(CSIDL_COMMON_APPDATA)
Laden und speichern Sie zusätzliche Programmdaten, wie Konfigurationen und INI-Files im Verzeichnis glbDataPath. Egal unter welchem System Ihre Anwendung läuft: die Daten können nun problemlos geschrieben und verändert werden... P.S.: Demo-Projekt folgt |
|
Autor: ralf schlegel |
0002 vbzMsgBox
![]() |
Jeder nutzt sie - die VB-integrierte MsgBox
Funktion! Sie erspart einem das Erstellen einer Form und ist
einfach ideal für Benutzer-Informationen, oder interaktive
Abfragen. Mit dem hier zum Download bereit gestellten Beispiel können Sie die MsgBox endlich im vollen Umfang nutzen:
Die Funktionen sind in einem einzigen Modul
gekapselt und lassen sich so problemlos in Ihre
Anwendungen implementieren, da Sie dort nur den Aufruf Ihrer
bisherigen MsgBox durch vbzMsgBox ersetzen, bzw.
erweitern müssen. |
|
Autor: ralf schlegel |
0001 NT-Betriebssystem?
![]() |
Damit Ihre Applikation auf den verschiedenen Windows-Plattformen lauffähig ist, ist es manchmal notwendig zwischen NT (NT/2000/XP) und Nicht-NT (Win9x/ME) Systemen zu unterscheiden, da zum Beispiel einige API-Aufrufe nur auf NT-Plattformen zur Verfügung stehen. Wenn auch die benutzte "GetVersionEx"-Funktion die genaue Betriebssystem-Version ermitteln kann, wollen wir uns in diesem Fall auf die Prüfung von NT-Basis beschränken:
' Deklaration:
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
' Typendefinition:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Const VER_PLATFORM_WIN32_NT = 2
' Funktion:
' Prüft auf NT-Betriebssysteme: True bei NT/2000/XP, sonst False
Public Function isSystemNT() As Boolean
Dim info As OSVERSIONINFO
info.dwOSVersionInfoSize = Len(info)
GetVersionEx info
isSystemNT = (info.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
|
|
Autor: ralf schlegel |




