vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · INI-Dateien   |   VB-Versionen: VB5, VB617.06.02
INI-Dateien für mehrere Benutzer

Eine erweiterte INI-Funktion mit der sich Einstellungen für den aktuellen (oder für alle) Benutzer abspeichern lassen.

Autor:   Richard ReiffingerBewertung:  Views:  20.452 
www.richistudios.comSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Auf vielen Computern sind oftmals mehrere Benutzer eingerichtet. Daher ist es oft erforderlich sein, dass jeder Benutzer seine eigenen Einstellungen vornehmen kann. Dies ist mit INI-Dateien, welcher meiner Meinung nach sowieso praktischer als die Regestry sind, natürlich ebenfalls möglich.

Alles, was Sie hierzu benötigen, ist ein Modul und folgender Code:

' API's für Lesen/und Schreiben von INI-Dateien
Private Declare Function GetPrivateProfileString Lib "kernel32" _
  Alias "GetPrivateProfileStringA" ( _
  ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, _
  ByVal lpDefault As String, _
  ByVal lpReturnedString As String, _
  ByVal nSize As Long, _
  ByVal lpFileName As String) As Long
 
Private Declare Function WritePrivateProfileString Lib "kernel32" _
  Alias "WritePrivateProfileStringA" ( _
  ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, _
  ByVal lpString As Any, _
  ByVal lpFileName As String) As Long
 
' GetUserName-Funktion
Private Declare Function API_GetUserName Lib "advapi32.dll" _
  Alias "GetUserNameA" ( _
  ByVal lpBuffer As String, _
  nSize As Long) As Long
 
' INI-Datei
Public INIFileName As String
' Gibt den Namen des aktuell angemeldeten Benutzers
' zurück
Public Function GetUserName() As String
  GetUserName = String(100, Chr$(0)) ' Erstelle Puffer
  API_GetUserName GetUserName, 100
 
  GetUserName = Left$(GetUserName, _
    InStr(GetUserName, Chr$(0)) - 1)
End Function
' Liest Informationen aus INI-Dateien
' Key = Schlüssel
' Paragraph = Abschnitt (Optional)
' PublicSetting = Gibt an ob die Einstellung für alle
' Benutzer ist oder nur für den aktuellen
Public Function INILesen(Key As String, _
  Optional DefaultValue As String = "", _
  Optional Paragraph As String = "Einstellungen", _
  Optional PublicSetting As Boolean = False) As String
 
  If PublicSetting Then
    ' globale Einstellung (alle User)
    Paragraph = "Public\" & Paragraph
  Else
    ' Userdefinierte Einstellung
    Paragraph = GetUserName & "\" & Paragraph
  End If
 
  If INIFileName = "" Then _
    INIFileName = App.Path & "\" & App.EXEName & ".INI"
 
  INILesen = String$(255, 0)
  If Key <> "" Then
    Call GetPrivateProfileString(Paragraph, Key, "", _
      INILesen, 255&, INIFileName)
  End If
  INILesen = Replace(INILesen, Chr(0), "")
  If INILesen = "" Then INILesen = DefaultValue
End Function
' Schreibt Informationen in INI-Dateien
' Key = Schlüssel
' Value = Wert (Optional)
' Paragraph = Abschnitt (Optional)
' PublicSetting = Gibt an ob die Einstellung für alle
' Benutzer ist oder nur für den aktuellen
Public Sub INISchreiben(Key As String, _
  Optional Value As String = "", _
  Optional Paragraph As String = "Einstellungen", _
  Optional PublicSetting As Boolean = False)
 
  If PublicSetting Then
    ' globale Einstellung (alles User)
    Paragraph = "Public\" & Paragraph
  Else
    ' Userdefinierte Einstellung
    Paragraph = GetUserName & "\" & Paragraph
  End If
 
  If INIFileName = "" Then _
    INIFileName = App.Path & "\" & App.EXEName & ".INI"
 
  If Key <> "" Then
    WritePrivateProfileString Paragraph, Key, Value, _
      INIFileName
  End If
End Sub

Anmerkung
Benutzerdefinierte Einstellungen werden in der INI-Datei wie folgt abgelegt:

[UserName\Einstellungen]
...

Und globale Einstellungen so:

[Public\Einstellungen]
...



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.