IDENTIFICAR O O.S.

XAVIER 30/10/2013 16:54:28
#430549
Olá Pessoal !

Como identificar o O.S. instalado ?

Simplismente que retorne: Windows XP, Windows7 32bits ou Windows7 64bits.

Um abraço e desde já agradeço.
XAVIER 30/10/2013 18:39:19
#430556
é + ou - assim pessoal:

Em um módulo:

Option Explicit

Private Declare Function RtlGetVersion Lib [Ô]NTDLL[Ô] (ByRef lpVersionInformation As Long) As Long
Public Function NativeGetVersion() As String
Dim tOSVw(&H54) As Long
tOSVw(0) = &H54 * &H4
Call RtlGetVersion(tOSVw(0))
NativeGetVersion = Join(Array(tOSVw(4), tOSVw(1), tOSVw(2)), [Ô].[Ô])
End Function

Public Function VersionToName(ByRef sVersion As String) As String
Select Case sVersion
Case [Ô]1.0.0[Ô]: VersionToName = [Ô]Windows 95[Ô]
Case [Ô]1.1.0[Ô]: VersionToName = [Ô]Windows 98[Ô]
Case [Ô]1.9.0[Ô]: VersionToName = [Ô]Windows Millenium[Ô]
Case [Ô]2.3.0[Ô]: VersionToName = [Ô]Windows NT 3.51[Ô]
Case [Ô]2.4.0[Ô]: VersionToName = [Ô]Windows NT 4.0[Ô]
Case [Ô]2.5.0[Ô]: VersionToName = [Ô]Windows 2000[Ô]
Case [Ô]2.5.1[Ô]: VersionToName = [Ô]Windows XP[Ô]
Case [Ô]2.5.3[Ô]: VersionToName = [Ô]Windows 2003 (SERVER)[Ô]
Case [Ô]2.6.0[Ô]: VersionToName = [Ô]Windows Vista[Ô]
Case [Ô]2.6.1[Ô]: VersionToName = [Ô]Windows 7[Ô]
Case Else: VersionToName = [Ô]Unknown[Ô]
End Select
End Function





Em um form:

Private Sub cmd_IdeOS_Click()
[ô]
Call MsgBox(VersionToName(NativeGetVersion))

End Sub

Um abraço pessoal !
EPISCOPAL 30/10/2013 20:24:24
#430558
tem uma classe aki ...

dim VerWin as new cSystemInformation

msgbox VerWin.GetOSVerEnum

vê se isso presta ...
AJSO 31/10/2013 14:01:34
#430595
Caro XAVIER

Fiz este exemplo para que possa estudar e analisar o código:

O Visual Basic possui limitações quanto a alguns sistemas operacionais atuais:
desktop Windows 7/8.
server Windows 2003/2008/2012........ etc.........

Sua necessidade de identificar plataformas como Windows 7 (x86) e (x64) ou superior talvez fique difícil utilizando o Visual Basic 6.


Plataforma x64 não tem recursos da linguagem para extrair de forma correta e precisa algumas informações........

Repare neste exemplo que que mesmo em plataforma x86 [ô]32 bits[ô] não há distinção quanto a Windows 2008 e Windows 7.....

Eu utilizo parte deste código para suporte a sistema operacional Windows95/98/2000/XP/2003........ [ô]já descontinuados[ô].


Boa Sorte
XAVIER 31/10/2013 14:03:52
#430596
Beleza WOLFFIRE !

Na verdade o que está faltando é só identificar se é 32 bits ou 64 bits.

Obrigado.
XAVIER 31/10/2013 14:33:09
#430601
A princípio, o sistema rodará somente em xp e win7 ambos na arquitetura 32bits. Embora a nova geração de máquinas seja 64bits.

Um sistema criado no vb6 em 32bits, se compilado em 64 bits, funcionará bem ? Basta somente compilar ?

Perdoem a minha ignorância pessoal. é que estou sempre aprendendo...
OCELOT 31/10/2013 16:39:09
#430604
Resposta escolhida
VB6 nunca é compilado para 64 bits, ele é um programa de 32 bits que gera programas apenas de 32 bits, porém o Windows de 64 bits também roda programas de 32 bits sem nenhum problema.

Para identificar se é ou não x64 tem que usar a API IsWow64Process, ela retorna true se o seu programa é de 32 bits e está rodando em um sistema operacional de 64 bits, porém ela só está disponível no XP SP2 para frente, então tem que verificar se ela está disponível ou não no sistema. Aqui tem um exemplo de como usar ela http://www.freevbcode.com/ShowCode.asp?ID=9043, só que geralmente não é necessário saber essa informação para o programa funcionar.

Quanto a detectar se é versão desktop ou versão servidor tem como também, é praticamente a mesma coisa que o AJSO passou, porém no exemplo dele é usado a estrutura OSVERSIONINFO, e para poder diferenciar entre desktop e server precisa usar a estrutura OSVERSIONINFOEX que possui algumas informações extras, onde uma delas é o tipo do produto, se é workstation, server ou domain controller
XAVIER 01/11/2013 08:48:33
#430624
Valeu Pessoal !
Tópico encerrado , respostas não são mais permitidas