Page 1 of 1
Obtener el nombre del OS o version de Windows
Posted: Wed Nov 22, 2023 8:53 am
by jnavas
Saludos y buen día,
Necesito conocer la version del OS que esta en ejecución, actualmente utilizo GETENV("OS"), en la mayoría indica windows_nt
estoy utilizando
oHttp:=CreateObject("winhttp.winhttprequest.5.1")
oHttp:Open("GET","https://www.bcv.org.ve",.f.)
Quien genera incidencias que requiere la participación del personal de soporte para habilitar protocolos. En versiones actuales de Windows no tenemos estas incidencias.
Re: Obtener el nombre del OS o version de Windows
Posted: Wed Nov 22, 2023 11:21 am
by JoseAlvarez
jnavas wrote:Saludos y buen día,
Necesito conocer la version del OS que esta en ejecución, actualmente utilizo GETENV("OS"), en la mayoría indica windows_nt
estoy utilizando
oHttp:=CreateObject("winhttp.winhttprequest.5.1")
oHttp:Open("GET","https://www.bcv.org.ve",.f.)
Quien genera incidencias que requiere la participación del personal de soporte para habilitar protocolos. En versiones actuales de Windows no tenemos estas incidencias.
Hola Juan, saludos
Code: Select all | Expand
Static Function VerWinVersion()
Local cWinVer
Run "ver > cWinVer.txt"
cWinver:= MemoRead('cWinVer.txt')
return cWinVer
Re: Obtener el nombre del OS o version de Windows
Posted: Wed Nov 22, 2023 11:36 am
by karinha
\SAMPLES\WINVER.PRG
Regards, saludos.
Re: Obtener el nombre del OS o version de Windows
Posted: Wed Nov 22, 2023 5:54 pm
by Willi Quintana
MI Estimado, prueba con esto:
Code: Select all | Expand
Function WMainInfo()
LOCAL oDatos, oSrv, oJob, i
LOCAL nFree:= ""
LOCAL oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
LOCAL objWMI:= oLoc:ConnectServer()
LOCAL oSistema:= objWMI:ExecQuery("Select * from Win32_PhysicalMedia")
LOCAL oDisco:= objWMI:ExecQuery("Select * from Win32_LogicalDisk")
LOCAL oParti:= objWMI:ExecQuery("Select * from CIM_DiskPartition")
LOCAL oDisket:= objWMI:ExecQuery("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")
LOCAL objUnd:= objWMI:ExecQuery("Select * from Win32_MappedLogicalDisk")
LOCAL oUnd:= objWMI:ExecQuery("Select * from Win32_CDROMDrive")
LOCAL oResolu:= objWMI:ExecQuery("Select * from Win32_DesktopMonitor")
LOCAL oSistem:= objWMI:ExecQuery("Select * from Win32_OperatingSystem")
LOCAL oUsers:= objWMI:ExecQuery("Select * from Win32_Account")
LOCAL oServ:= objWMI:ExecQuery("Select * from Win32_Service Where Name = 'Themes'")
LOCAL oTime:= objWMI:ExecQuery("Select * from Win32_LocalTime")
LOCAL oProc:= objWMI:ExecQuery("Select * from Win32_Processor")
LOCAL oJbs:= objWMI:ExecQuery("SELECT Product, SerialNumber FROM Win32_BaseBoard")
LOCAL oIpSet:= objWMI:ExecQuery("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")
LOCAL oList := objWMI:ExecQuery("Select * from Win32_ComputerSystem")
//Return(Nil)
objWMI:= oLoc:ConnectServer()
oJbs := objWMI:ExecQuery( "select * from Win32_BaseBoard" )
//oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" )
FOR EACH oDatos IN oJbs
oApp:tMBrd := Alltrim(cValtoChar(oDatos:Product))
oApp:sMBrd := Alltrim(cValtoChar(oDatos:SerialNumber))
NEXT
FOR EACH oDatos IN oProc
oApp:nCpu := Alltrim(cValtoChar(oDatos:Name))
oApp:vCpu := Alltrim(cValtoChar(oDatos:CurrentClockSpeed)) + " Mghz"
NEXT
FOR Each oDatos in oSistem
oApp:vDOS := oDatos:Caption + " " + oDatos:VERSION
NEXT
Return(NIl)
/*
FOR Each oDatos In oSistema
MsgInfo("Serial de fabrica: " + ALLTRIM(cValToChar(oDatos:SerialNumber)),"Numero de serie del disco duro")
NEXT
FOR Each oDatos In oDisco
MsgInfo("Unidad: " + ALLTRIM(cValToChar(oDatos:Name)) + "\ Serial: " + ALLTRIM(cValToChar(oDatos:VolumeSerialNumber)),"Unidad y serial lógico de las unidades de disco")
NEXT
FOR Each oDatos in oParti
MsgInfo(ALLTRIM(cValToChar(oDatos:Name)) + " - Tamaño: " +ALLTRIM(cValToChar(oDatos:Size)) + " En: " + ALLTRIM(cValToChar(oDatos:SystemName)) + " - Tipo: " + ALLTRIM(cValToChar(oDatos:TYPE)),"Particiones disponibles")
NEXT
FOR Each oDatos in oDisket
nFree:= oDatos:FreeSpace
IF VALTYPE(nFree) = "U"
MsgInfo("No hay diskete en la unidad A:\","Aviso del WMI de Windows")
ELSE
MsgStop("Hay un diskete en la unidad A:\","Aviso del WMI de Windows")
ENDIF
NEXT
FOR Each oDatos In objUnd
MsgInfo("Device ID: " + oDatos:DeviceID +" Nombre: " + oDatos:Name +" Espacio Libre: " + cValtoChar(oDatos:FreeSpace) + " Tamaño: " + cValtoChar(oDatos:Size),"Lista de unidades Mapeadas en Mi PC")
NEXT
FOR Each oDatos in oUnd
MsgInfo("Unidad: " + oDatos:Drive + " " + "Nombre: " + oDatos:Caption,"Unidades de CD instaladas en el equipo")
NEXT
FOR Each oDatos in oResolu
MsgInfo("Trabajando a Resolución de Alto: " + cValToChar(oDatos:ScreenHeight) + " y Ancho: " + cValToChar(oDatos:ScreenWidth),"Resolucion de Panralla")
NEXT
FOR Each oDatos In oSistem
MsgInfo(oDatos:InstallDate,"Fecha de Instalación de Windows XP")
NEXT
FOR Each oDatos in oSistem
MsgInfo("Directorio de Windows es: " + oDatos:WindowsDirectory +" Directorio del Sistema es: "+ oDatos:SystemDirectory,"Directorio de Windows y del Sistema")
NEXT
/*
FOR Each oDatos in oUsers
MsgInfo(cValToChar(oDatos:Name) + " - " + cValToChar(oDatos:Caption),"Lista de Usuarios de Windows")
NEXT
MsgInfo("Deshabilitarndo los Themes en Windows XP")
FOR Each oDatos in oServ
oDatos:StopService()
SysRefresh()
NEXT
MsgInfo("Habilitando los Themes en Windows XP")
FOR Each oDatos in oServ
oDatos:StartService()
SysRefresh()
NEXT
FOR Each oDatos in oSistem
MsgInfo(oDatos:Caption + " " + oDatos:VERSION,"Sistemas operativos instalados en el PC")
NEXT
FOR Each oDatos in oTime
MsgInfo( "Día: " + cValToChar(oDatos:DAY) + CRLF +;
"Día de la semana: " + cValToChar(oDatos:DayOfWeek) + CRLF +;
"Hora: " + cValToChar(oDatos:Hour) + CRLF +;
"Minutos: " + cValToChar(oDatos:Minute) + CRLF +;
"Mes: " + cValToChar(oDatos:MONTH) + CRLF +;
"Segundos: " + cValToChar(oDatos:Second) + CRLF +;
"Semana en el mes: " + cValToChar(oDatos:WeekInMonth) + CRLF +;
"Año: " + cValToChar(oDatos:YEAR),"Dia, Hora, Mes y Año desde WMI")
NEXT
FOR EACH oDatos IN oProc
MsgInfo("El Nombre del Procesador es: "+Alltrim(cValtoChar(oDatos:Name)),"Desde WMI")
MsgInfo("la Velocidad Actual del Procesador es: "+Alltrim(cValtoChar(oDatos:CurrentClockSpeed)) + " Mghz","Desde WMI")
MsgInfo("la Velocidad Màxima del Procesador es: "+Alltrim(cValtoChar(oDatos:MaxClockSpeed)) + " Mghz","Desde WMI")
NEXT
FOR EACH oDatos IN oJbs
MsgInfo("El Tipo de la MotherBoard es: "+Alltrim(cValtoChar(oDatos:Product)),"Desde WMI")
MsgInfo("El Número de Serie de la MotherBoard es: "+Alltrim(cValtoChar(oDatos:SerialNumber)),"Desde WMI")
NEXT
FOR EACH oDatos IN oIPSet
MsgInfo("El IPAddress es: " + Alltrim(cValtoChar(oDatos:IPAddress(0))), "Desde WMI")
MsgInfo("El MacAddress es: " + Alltrim(cValtoChar(oDatos:IPAddress(1))), "Desde WMI")
NEXT
FOR EACH oDatos IN oList
If oDatos:PartOfDomain
MsgInfo("Dominio: " + oDatos:Domain, "Desde WMI")
Else
MsgInfo("Grupo de Trabajo: " + oDatos:Domain, "Desde WMI")
EndIf
Next
Return nil
Re: Obtener el nombre del OS o version de Windows
Posted: Thu Nov 23, 2023 4:59 am
by carlos vargas
Re: Obtener el nombre del OS o version de Windows
Posted: Tue Dec 12, 2023 8:14 pm
by jll-fwh
Hola jNavas:
Aquí te dejo otra opción que creo que es lo que buscas:
OS()->cOSName
Os_IsWin2000()->lIsWin2000
Os_IsWin2000_Or_Later()->lIsWin2000_Or_Later
Os_IsWin2003()->lIsWin2003
Os_IsWin95()->lIsWin95
Os_IsWin98()->lIsWin98
Os_IsWin9X()->lIsWin9X
Os_IsWinME()->lIsWinME
Os_IsWinNT()->lIsWinNT
Os_IsWinNT351()->lIsWinNT351
Os_IsWinNT4()->lIsWinNT40
Os_IsWinVISTA()->lIsWinVista
Os_IsWinXP()->lIsWinXP
Aquí tienes un hilo con todas las funciones Harbour: ( publicado por carlos navas el 21-10-2017 )
https://forums.fivetechsupport.com/view ... ec#p206607
Espero que te sirva y que tengas mucha salud y felicidad.
Un abrazo;
Javier Lloris
javierllorisprogramador@gmail.com
Blogs personales:
Programación:
https://javierlloris.blogspot.com/
Japonés:
https://bitacorajaponesa.blogspot.com/
Cubos de Rubik:
https://www.instagram.com/jllorisperson ... 2ybz0gmvul
Tengo una colección de unos 100 cubos de todo tipo de formas geométricas, todos resueltos, en instagram solo hay unos cuentos cubos.
Re: Obtener el nombre del OS o version de Windows
Posted: Wed Dec 13, 2023 6:38 am
by nageswaragunupudi
Code: Select all | Expand
? "Windows " + cWinVersion() // -> "Windows 11 64 Bits"
Re: Obtener el nombre del OS o version de Windows
Posted: Wed Dec 13, 2023 6:55 am
by nageswaragunupudi
My humble submission.
Whenever we want something, first look into our own FWH, next Harbour and then only other outside sources.
It is not uncommon for us to encounter runtime errors and see the error.log
Every error.log shows Windows version like this and we might have seen it many times.
Code: Select all | Expand
Compiler version: Harbour 3.2.0dev (r2104281802)
FiveWin version: FWH 23.10
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows 11 64 Bits, version: 6.2, Build 9200
If we just look into FWH errsysw.prg, we get to know what function is used, we see the usage of FWH functions:
Code: Select all | Expand
cWinVersion()
// and
GetVersion() // for more build information