Wie erkenne ich mit VB.NET (ab .NET Framework 2.0), ob die VB.NET Applikation mit Administratoren Rechten gestartet wurde? Eigentlich ist dazu nur einige einzige Zeile Code nötig:

View Code VBNET
1
Dim isAdmin As Boolean = My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator)

Doch schon folgten bei einer komplexeren Applikation die ersten Probleme. Nie gab mir diese Methode als Administrator den korrekten Wert zurück (Begründung der .NET Hilfe). Bis ich eine kleine Zeile davor hinzufügte:

View Code VBNET
1
2
My.User.InitializeWithWindowsUser()
Dim isAdmin As Boolean = My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator)

Auf der Microsoft Homepage befindet sich übrigens zum ganze UAC (User Account Control) von Windows Vista ein relativ dickes Dokument. Die meisten Codebeispiele sind in C++ gehalten und verwenden leider absolut unbegreiflicherweise die Unmanaged Win API.