Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    184

    [VB6] admin+sistema operativo

    Devo creare un'applicazione vb che mi fornisca le seguenti informazioni:
    - sapere se sono amministratore del pc
    - sapere quale sistema operativo è in esecuzione
    come faccio?
    Esiste un progettino già pronto che fa questa cosa?
    Grazie e ciao a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    205

    Re: [VB6] admin+sistema operativo

    ciao,
    per individuare il sistema operativo utilizzato dai un'occhiata QUI se ne è già parlato...
    spero di esserti stato utile
    ciao a presto

    Originariamente inviato da pieromont
    Devo creare un'applicazione vb che mi fornisca le seguenti informazioni:
    - sapere se sono amministratore del pc
    - sapere quale sistema operativo è in esecuzione
    come faccio?
    Esiste un progettino già pronto che fa questa cosa?
    Grazie e ciao a tutti

  3. #3
    per capire se si è admin non è facile cmq

    da mettere in un modulo oppure dichiarare tutto come private

    codice:
    'nel modulo
    Option Explicit
    Option Base 0     ' Importante che la base sia a 0
    
    Private Const ANYSIZE_ARRAY = 20
    
    ' Security API
    Private Const TokenUser = 1
    Private Const TokenGroups = 2
    Private Const TokenPrivileges = 3
    Private Const TokenOwner = 4
    Private Const TokenPrimaryGroup = 5
    Private Const TokenDefaultDacl = 6
    Private Const TokenSource = 7
    Private Const TokenType = 8
    Private Const TokenImpersonationLevel = 9
    Private Const TokenStatistics = 10
    
    ' Token Access
    Private Const TOKEN_ASSIGN_PRIMARY = &H1
    Private Const TOKEN_DUPLICATE = &H2
    Private Const TOKEN_IMPERSONATE = &H4
    Private Const TOKEN_QUERY = &H8
    Private Const TOKEN_QUERY_SOURCE = &H10
    Private Const TOKEN_ADJUST_PRIVILEGES = &H20
    Private Const TOKEN_ADJUST_GROUPS = &H40
    Private Const TOKEN_ADJUST_DEFAULT = &H80
     
    ' NT well-known SIDs
    Private Const SECURITY_DIALUP_RID = &H1
    Private Const SECURITY_NETWORK_RID = &H2
    Private Const SECURITY_BATCH_RID = &H3
    Private Const SECURITY_INTERACTIVE_RID = &H4
    Private Const SECURITY_SERVICE_RID = &H6
    Private Const SECURITY_ANONYMOUS_LOGON_RID = &H7
    Private Const SECURITY_LOGON_IDS_RID = &H5
    Private Const SECURITY_LOCAL_SYSTEM_RID = &H12
    Private Const SECURITY_NT_NON_UNIQUE = &H15
    Private Const SECURITY_BUILTIN_DOMAIN_RID = &H20
    
    ' valori sub-authority  (RIDs)
    Private Const DOMAIN_ALIAS_RID_ADMINS = &H220
    Private Const DOMAIN_ALIAS_RID_USERS = &H221
    Private Const DOMAIN_ALIAS_RID_GUESTS = &H222
    Private Const DOMAIN_ALIAS_RID_POWER_USERS = &H223
    Private Const DOMAIN_ALIAS_RID_ACCOUNT_OPS = &H224
    Private Const DOMAIN_ALIAS_RID_SYSTEM_OPS = &H225
    Private Const DOMAIN_ALIAS_RID_PRINT_OPS = &H226
    Private Const DOMAIN_ALIAS_RID_BACKUP_OPS = &H227
    Private Const DOMAIN_ALIAS_RID_REPLICATOR = &H228
    
    Private Const SECURITY_NT_AUTHORITY = &H5
    
    Type SID_AND_ATTRIBUTES
        Sid As Long
        Attributes As Long
    End Type
    
    Type TOKEN_GROUPS
        GroupCount As Long
        Groups(ANYSIZE_ARRAY) As SID_AND_ATTRIBUTES
    End Type
    
    Type SID_IDENTIFIER_AUTHORITY
        Value(0 To 5) As Byte
    End Type
    
    Declare Function GetCurrentProcess Lib "Kernel32" () As Long
    
    Declare Function GetCurrentThread Lib "Kernel32" () As Long
    
    Declare Function OpenProcessToken Lib "Advapi32" ( _
        ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
        TokenHandle As Long) As Long
    
    Declare Function OpenThreadToken Lib "Advapi32" ( _
        ByVal ThreadHandle As Long, ByVal DesiredAccess As Long, _
        ByVal OpenAsSelf As Long, TokenHandle As Long) As Long
    
    Declare Function GetTokenInformation Lib "Advapi32" ( _
        ByVal TokenHandle As Long, TokenInformationClass As Integer, _
        TokenInformation As Any, ByVal TokenInformationLength As Long, _
        ReturnLength As Long) As Long
    
    Declare Function AllocateAndInitializeSid Lib "Advapi32" ( _
        pIdentifierAuthority As SID_IDENTIFIER_AUTHORITY, _
        ByVal nSubAuthorityCount As Byte, ByVal nSubAuthority0 As Long, _
        ByVal nSubAuthority1 As Long, ByVal nSubAuthority2 As Long, _
        ByVal nSubAuthority3 As Long, ByVal nSubAuthority4 As Long, _
        ByVal nSubAuthority5 As Long, ByVal nSubAuthority6 As Long, _
        ByVal nSubAuthority7 As Long, lpPSid As Long) As Long
    
    Declare Function RtlMoveMemory Lib "Kernel32" ( _
        Dest As Any, Source As Any, ByVal lSize As Long) As Long
    
    Declare Function IsValidSid Lib "Advapi32" (ByVal pSid As Long) As Long
    
    Declare Function EqualSid Lib "Advapi32" (pSid1 As Any, pSid2 As Any) As Long
    
    Declare Sub FreeSid Lib "Advapi32" (pSid As Any)
    
    Declare Function CloseHandle Lib "Kernel32" (ByVal hObject As Long) As Long
    
    Public Function IsAdmin() As Boolean
        Dim hProcessToken       As Long
        Dim BufferSize          As Long
        Dim psidAdmin           As Long
        Dim lResult             As Long
        Dim X                   As Integer
        Dim tpTokens            As TOKEN_GROUPS
        Dim tpSidAuth           As SID_IDENTIFIER_AUTHORITY
    
        IsAdmin = False
        tpSidAuth.Value(5) = SECURITY_NT_AUTHORITY
        
        ' trova il token corrente
        If Not OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, True, hProcessToken) Then
            Call OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, hProcessToken)
        End If
        If hProcessToken Then
    
            ' Determina quanto buffer serve
            Call GetTokenInformation(hProcessToken, ByVal TokenGroups, 0, 0, BufferSize)
            If BufferSize Then
                ReDim InfoBuffer((BufferSize \ 4) - 1) As Long
                
                ' trova il puntaore alle tue token information
                lResult = GetTokenInformation(hProcessToken, ByVal TokenGroups, InfoBuffer(0), BufferSize, BufferSize)
                If lResult <> 1 Then Exit Function
                
                ' Muove i dati dentro la stuttura
                Call RtlMoveMemory(tpTokens, InfoBuffer(0), Len(tpTokens))
                
                ' trova il puntatore admins sid
                lResult = AllocateAndInitializeSid(tpSidAuth, 2, SECURITY_BUILTIN_DOMAIN_RID, _
                        DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdmin)
                If lResult <> 1 Then Exit Function
                If IsValidSid(psidAdmin) Then
                    For X = 0 To tpTokens.GroupCount
                        If IsValidSid(tpTokens.Groups(X).Sid) Then
                            'controlla se il tuo sid è uguale a quello dell'admin
                            If EqualSid(ByVal tpTokens.Groups(X).Sid, ByVal psidAdmin) Then
                                IsAdmin = True
                                Exit For
                            End If
                        End If
                    Next
                End If
                If psidAdmin Then Call FreeSid(psidAdmin)
            End If
            Call CloseHandle(hProcessToken)
        End If
    End Function
    nella pocedura che deve determinare se admin o meno

    codice:
    dim IamAdmin as boolean
    
        IamAdmin = IsAdmin
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.