Hallo,
das Update-Download-Tool finde ich sehr gut und habe es auch bisher ohne Probleme im Einsatz.
Was ich vermisse, ist eine Hinweismeldung an Anwender, die nicht über Adminrechte verfügen. Stoßen diese eine Updateprüfung an, so geschieht Augenscheinlich nichts, außer dass kurz der Task des Update-Tools in der Task-Leiste angezeigt wird.
Alternativ wäre es auch möglich, im jeweiligen Programm eine Abfrage zu machen und dann die Downloadmöglichkeit erst gar nicht anzubieten. Wenn jemand ein Codebeispiel für VBA dazu hätte, wäre ich sehr dankbar.
Freundliche Grüße aus Fürth
Peter Marchert
Hinweismeldung für eingeschränkte Anwender
Hinweismeldung für eingeschränkte Anwender
Infos, Workshops & Soft-
ware für Ihr Outook®
ware für Ihr Outook®
So, ich habe etwas passendes bei Microsoft gefunden. Für den Fall, dass die Seite nicht (mehr) erreichbar ist, hier der Code:
Gruß
Peter
Code: Alles auswählen
Private Const NERR_Success As Long = 0&
Private Const LevelUserInfo1 As Long = 1&
Private Const USER_PRIV_ADMIN As Long = 2&
Private Const VER_PLATFORM_WIN32_NT As Long = 2&
' Benutzer-Informationen:
Private Type USER_INFO_1
usri1_name As Long
usri1_password As Long
usri1_password_age As Long
usri1_priv As Long
usri1_home_dir As Long
usri1_comment As Long
usri1_flags As Long
usri1_script_path As Long
End Type
' Informationen zum Betriebssystem:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long ' Größe der Struktur
dwMajorVersion As Long ' Major-Versionsnummer
dwMinorVersion As Long ' Minor-Versionsnummer
dwBuildNumber As Long ' Build-Versionsnummer
dwPlatformId As Long ' Plattform-Kennzeichner
szCSDVersion As String * 128 ' Service Pack (Klartext)
End Type
' Windows-Versionsinformationen abfragen:
Private Declare Function GetVersionEx _
Lib "kernel32" Alias "GetVersionExA" ( _
ByRef VersionInformation As OSVERSIONINFO _
) As Long
' Benutzerinformationen ermitteln:
Private Declare Function NetUserGetInfo _
Lib "netapi32" ( _
ByVal ServerName As Long, _
ByVal UserName As Long, _
ByVal Level As Long, _
ByRef ptrBuffer As Long _
) As Long
' Freigabe des von NetUserGetInfo reservierten Speichers:
Private Declare Function NetApiBufferFree _
Lib "NETAPI32.DLL" ( _
ByVal ptrBuffer As Long _
) As Long
' Benutzernamen ermitteln:
Private Declare Function GetUserName _
Lib "advapi32.dll" Alias "GetUserNameA" ( _
ByVal lpBuffer As String, _
ByRef Size As Long _
) As Long
' Speicherbereiche kopieren:
Private Declare Sub CopyMemory _
Lib "kernel32" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Size As Long)
Public Function IsAdmin(Optional ByVal UserName As String) As Boolean
' ---------------------------------------------------------------
' IsAdmin prüft, ob ein Anwender zur Gruppe der Administratoren
' gehört. Wird UserName nicht übergeben, wird die Prüfung für
' den aktuell angemeldeten Benutzer auf der lokalen Maschine
' durchgeführt. Unter Windows 95/98/Me wird mangels Rechtebe-
' schränkung grundsätzlich TRUE zurückgegeben.
' ---------------------------------------------------------------
Dim OSV As OSVERSIONINFO
Dim UserInfo1 As USER_INFO_1
Dim lSize As Long
Dim ptrBuffer As Long
Dim RetVal As Long
' Windows-Versionsinformationen abfragen
OSV.dwOSVersionInfoSize = Len(OSV)
GetVersionEx OSV
' Ist als OS Windows NT/2000/XP oder Nachfolger gegeben?
If OSV.dwPlatformId <> VER_PLATFORM_WIN32_NT Then
' Es liegt keine NT-basierende Windows-Version vor.
' Die Funktion wird hier mit TRUE verlassen, da Windows
' 95/98/Me die Rechte des Anwenders nicht einschränken,
' einem Administrator vergleichbare Rechte also gegeben sind:
IsAdmin = True
Exit Function
End If
' Falls kein Benutzername übergeben wurde, statt-
' dessen den aktuellen Benutzernamen ermitteln:
If Len(UserName) = 0 Then
GetUserName UserName, lSize ' nötige Buffergröße ermitteln
UserName = Space$(lSize) ' Buffer bereitstellen und...
GetUserName UserName, lSize ' ...Information abholen
End If
' USER_INFO_1-Benutzerinfos auslesen:
RetVal = NetUserGetInfo(StrPtr(ComputerName), _
StrPtr(UserName), _
LevelUserInfo1, _
ptrBuffer)
' War der Aufruf von NetUserGetInfo erfolgreich?
If RetVal = NERR_Success Then ' Erfolgreicher Aufruf
' Ermittelte Daten in eine USER_INFO_1-Struktur kopieren:
CopyMemory UserInfo1, ByVal ptrBuffer, Len(UserInfo1)
' Von NetUserGetInfo reservierten Speicherbereich freigeben
NetApiBufferFree ptrBuffer
' Auswerten, ob der Benutzer Administrator-Rechte hat:
IsAdmin = (UserInfo1.usri1_priv = USER_PRIV_ADMIN)
End If
End Function
Peter
Infos, Workshops & Soft-
ware für Ihr Outook®
ware für Ihr Outook®
-
- Administrator
- Beiträge: 1092
- Registriert: 29.02.2004, 15:51
- Wohnort: Hamburg
- Kontaktdaten:
-
- Administrator
- Beiträge: 1092
- Registriert: 29.02.2004, 15:51
- Wohnort: Hamburg
- Kontaktdaten:
Guten Tag!
Ob es eine Form von LUA-Update noch unter Version 1.x geben wird ist fraglich, da es von einigen Kunden als direkte Updatemöglichlichkeit in das Programmverzeichnis genutzt wird. Dies ist selbst als Amin unter Vista mit eingehaltetem UAC nicht möglich, wenn dort nicht explizied Schreibrechte vergeben wurden. Was dem Sicherheitskonzept nicht gerade zuträglich ist.
Es wird also zwei Möglichkeiten geben A, wird gerüft ob ins Update-Verzeichnis Schreibrechte gibt, wenn nicht gibt es eine Meldung und B wird es eine Admin-Rechtefunktion geben.
Weiterhin werden alle Starts über ShellExecute ausgeführt, die bringt unter Vista die entsprechende Meldung hoch.
Zur Zeit ist UDT noch mit einem entsprechenden Manifest versehen, das dieses automatisch macht.
Es ist also noch kein LUA-Update unter Vista möglich.
Eine Frage der Zeit:
Das Doppelposting sollte mich wohl daran erinnern, dass dieser Punkt schon einige Zeit angekündigt ist.
Zur Zeit sind leider die Entwicklungen an AKInstellerMSI und der Version 3.5 (kostenpflichtig) des AKInstallers wichtiger, da die (so ist es leider) mehr Geld ins Haus bringen.
Ich werde aber mal versuchen, dass nach den Professional-Erweiterungen (AKI MSI) Gruppe/Benutzerrechte und Geplante Tasks einzuschieben.
Mit freundlichen Grüßen
A. Kapust
Ob es eine Form von LUA-Update noch unter Version 1.x geben wird ist fraglich, da es von einigen Kunden als direkte Updatemöglichlichkeit in das Programmverzeichnis genutzt wird. Dies ist selbst als Amin unter Vista mit eingehaltetem UAC nicht möglich, wenn dort nicht explizied Schreibrechte vergeben wurden. Was dem Sicherheitskonzept nicht gerade zuträglich ist.

Es wird also zwei Möglichkeiten geben A, wird gerüft ob ins Update-Verzeichnis Schreibrechte gibt, wenn nicht gibt es eine Meldung und B wird es eine Admin-Rechtefunktion geben.
Weiterhin werden alle Starts über ShellExecute ausgeführt, die bringt unter Vista die entsprechende Meldung hoch.
Zur Zeit ist UDT noch mit einem entsprechenden Manifest versehen, das dieses automatisch macht.
Es ist also noch kein LUA-Update unter Vista möglich.
Eine Frage der Zeit:
Das Doppelposting sollte mich wohl daran erinnern, dass dieser Punkt schon einige Zeit angekündigt ist.

Zur Zeit sind leider die Entwicklungen an AKInstellerMSI und der Version 3.5 (kostenpflichtig) des AKInstallers wichtiger, da die (so ist es leider) mehr Geld ins Haus bringen.
Ich werde aber mal versuchen, dass nach den Professional-Erweiterungen (AKI MSI) Gruppe/Benutzerrechte und Geplante Tasks einzuschieben.
Mit freundlichen Grüßen
A. Kapust
Nein, das war ein Versehen. Ich habe wegen dem msi-Installer vorbeigeschaut und bei dieser Gelegenheit meine Signatur geändert und wollte auch den Beitrag nur ändern und nicht noch einmal posten.Andreas Kapust hat geschrieben:Das Doppelposting sollte mich wohl daran erinnern, dass dieser Punkt schon einige Zeit angekündigt ist.
Danke für die ehrliche Antwort.Andreas Kapust hat geschrieben: Zur Zeit sind leider die Entwicklungen an AKInstellerMSI und der Version 3.5 (kostenpflichtig) des AKInstallers wichtiger, da die (so ist es leider) mehr Geld ins Haus bringen.
Freundliche Grüße
Peter Marchert
Infos, Workshops & Soft-
ware für Ihr Outook®
ware für Ihr Outook®