Información del equipo

 

Fecha: 05/Dic/98 (03/Dic/98)
Autor: Roberto Alvarez
[email protected]



Hola Guille, en primer lugar felicitarte por la página.
Como me sentía muy mal sacando información y no aportando nada a cambio, a continuación te envío un programa que genera un fichero de información acerca del equipo en el que se ejecute. El fichero tiene como nombre el Computer Name del equipo y además de este se incluyen datos como, el usuario con el que se ha iniciado la sesión, las unidades disponibles y su capacidad, el total de memoria RAM, etc...
En mi opinión, este programa puede ser útil para aquellas personas que estén realizando un inventario de los PC de los que disponen en su empresa (Se puede incluir su ejecución en el script de inicio de sesión, para que se genere cada vez que se inicie una sesión en la red y dejar los resultados en un servidor).
A continuación te envío el código fuente y adjunto un fichero de ejemplo, para que veas como queda.

 

Gracias y hasta pronto.

PD: Si alguien quiere mejorar el programa o añadir funcionalidad y adelante que nos lo cuente a todos.

El fichero con el resultado de la información:

Nombre del equipo:   ROBERTO ALVAREZ
Usuario actual:      Roberto 

--- Información del equipo ---
Espacio total en unidad C : 2047
Espacio libre en unidad C : 121
Espacio total en unidad D : 968
Espacio libre en unidad D : 968
Dispone de CDRom en la unidad E
Memoria Ram:          32188
Tipo de procesador:   586

--- Sistema Operativo ---
Versión:             4
CSDVersion:          B                                                                                                                              
Número fabricante:   67109975
ID de plataforma:    1

 

El código:

'
Attribute VB_Name = "Module1"
Option Explicit

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" _
(ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)
Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long


Type MEMORYSTATUS
        dwLength As Long
        dwMemoryLoad As Long
        dwTotalPhys As Long
        dwAvailPhys As Long
        dwTotalPageFile As Long
        dwAvailPageFile As Long
        dwTotalVirtual As Long
        dwAvailVirtual As Long
End Type


Type SYSTEM_INFO
        dwOemID As Long
        dwPageSize As Long
        lpMinimumApplicationAddress As Long
        lpMaximumApplicationAddress As Long
        dwActiveProcessorMask As Long
        dwNumberOrfProcessors As Long
        dwProcessorType As Long
        dwAllocationGranularity As Long
        dwReserved As Long
End Type


Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128      '  Cadena de mantenimiento para uso de PSS
End Type


Public Sub Main()
    Dim ComputerName As String
    Dim Usuario As String
    Dim Tamaño As Long
    Dim Version As OSVERSIONINFO
    Dim SystemInfo As SYSTEM_INFO
    Dim Memoria As MEMORYSTATUS
    Dim Unidad(1 To 10) As String
    Dim Sectores As Long
    Dim Cluster As Long
    Dim Bytes As Long
    Dim ClusterLibres As Long
    Dim ClusterTotal As Long
    Dim EspacioLibre As Integer
    Dim EspacioTotal As Long
    Dim Mbytes As Integer
    Dim Fichero As String
    Dim Resultado As Long
    Dim TipoUnidad As Long
    Dim Ind As Integer
    
        
    'Unidades sobre las que se obtiene información
    Unidad(1) = "C:\"
    Unidad(2) = "D:\"
    Unidad(3) = "E:\"
    Unidad(4) = "F:\"
    Unidad(5) = "G:\"
    Unidad(6) = "H:\"
    Unidad(7) = "I:\"
    Unidad(8) = "J:\"
    Unidad(9) = "K:\"
    Unidad(10) = "L:\"
    Mbytes = 1024
    
    
    'Memoria
    Call GlobalMemoryStatus(Memoria)
    
    'Versión del Sistema Operativo
    Version.szCSDVersion = Space$(260)
    Tamaño = Len(Version)
    Version.dwOSVersionInfoSize = Tamaño
    Call GetVersionEx(Version)
    
    'Información del equipo
    Call GetSystemInfo(SystemInfo)
    
    'Usuario
    Usuario = Space$(260)
    Tamaño = Len(Usuario)
    Call GetUserName(Usuario, Tamaño)
    Usuario = Left$(Usuario, Tamaño)
    
    'Computer Name
    ComputerName = Space$(260)
    Tamaño = Len(ComputerName)
    Call GetComputerName(ComputerName, Tamaño)
    ComputerName = Left$(ComputerName, Tamaño)
    
    'Guardar la información en disco
    Fichero = ComputerName & ".txt"
    Open Fichero For Output As #1
    
    Print #1, "Nombre del equipo:   " & ComputerName
    Print #1, "Usuario actual:      " & Usuario
    Print #1, ""
    Print #1, "--- Información del equipo ---"
    For Ind = 1 To 10
        TipoUnidad = GetDriveType(Unidad(Ind))
        If TipoUnidad = 3 Then
            Call GetDiskFreeSpace(Unidad(Ind), Sectores, Bytes, ClusterLibres, ClusterTotal)
            EspacioLibre = (Sectores * Bytes * ClusterLibres) / Mbytes / Mbytes
            EspacioTotal = (Sectores * Bytes * ClusterTotal) / Mbytes / Mbytes
            Print #1, "Espacio total en unidad " & Left(Unidad(Ind), 1) & " : " & EspacioTotal
            Print #1, "Espacio libre en unidad " & Left(Unidad(Ind), 1) & " : " & EspacioLibre
        Else
            If TipoUnidad = 5 Then
                Print #1, "Dispone de CDRom en la unidad " & Left(Unidad(Ind), 1)
            End If
        End If
    Next
    Print #1, "Memoria Ram:          " & (Memoria.dwTotalPhys / 1024)
    Print #1, "Tipo de procesador:   " & SystemInfo.dwProcessorType
    Print #1, ""
    Print #1, "--- Sistema Operativo ---"
    Print #1, "Versión:             " & Version.dwMajorVersion
    Print #1, "CSDVersion:         " & Version.szCSDVersion
    Print #1, "Número fabricante:   " & Version.dwBuildNumber
    Print #1, "ID de plataforma:    " & Version.dwPlatformId
    
    Close #1

End Sub

ir al índice