powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить имя ОС компьютера?
15 сообщений из 15, страница 1 из 1
Как получить имя ОС компьютера?
    #36630024
Игорь1973
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
под которым работает программа на VB6?
Имя соответствующей Win32 API функции кто знает?
Спасибо.
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36630029
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Public Declare Function GetComputerNameA Lib "KERNEL32" (ByVal lpBuffer As String, nSize As Long) As Long
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36630032
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...если я правильно понял и вам нужно имя компа в ОС, а не имя самой ОС
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36630052
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim WshNetwork As Object
Set WshNetwork = CreateObject("WScript.Network")
MsgBox "Имя компа = " & WshNetwork.ComputerName 
MsgBox "Имя юзера = " & WshNetwork.UserName
MsgBox "Имя домена = " & WshNetwork.UserDomain
Set WshNetwork = Nothing
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36631166
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro...если я правильно понял и вам нужно имя компа в ОС, а не имя самой ОС
Вы неправильно поняли, ему нужно вот это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2009 VBnet, Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Distribution: You can freely use this code in your own
'               applications, but you may not reproduce
'               or publish this code on any web site,
'               online service, or distribute as source
'               on any media without express permission.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Const VER_PLATFORM_WIN32s =  0 
Private Const VER_PLATFORM_WIN32_WINDOWS =  1 
Private Const VER_PLATFORM_WIN32_NT =  2 

'windows-defined type OSVERSIONINFO
Private Type OSVERSIONINFO
  OSVSize         As Long         'size, in bytes, of this data structure
  dwVerMajor      As Long         'ie NT 3.51, dwVerMajor = 3; NT 4.0, dwVerMajor = 4.
  dwVerMinor      As Long         'ie NT 3.51, dwVerMinor = 51; NT 4.0, dwVerMinor= 0.
  dwBuildNumber   As Long         'NT: build number of the OS
                                  'Win9x: build number of the OS in low-order word.
                                  '       High-order word contains major & minor ver nos.
  PlatformID      As Long         'Identifies the operating system platform.
  szCSDVersion    As String *  128  'NT: string, such as "Service Pack 3"
                                  'Win9x: 'arbitrary additional information'
End Type


'my type for holding the retrieved info
Public Type RGB_WINVER
  PlatformID      As Long
  VersionName     As String
  VersionNo       As String
  ServicePack     As String
  BuildNo         As String
End Type

Declare Function GetVersionEx Lib "kernel32" _
   Alias "GetVersionExA" _
  (lpVersionInformation As OSVERSIONINFO) As Long

Public Function GetWinVersion(win As RGB_WINVER) As String

'returns a structure (RGB_WINVER)
'filled with OS information

  #If Win32 Then
  
   Dim osv As OSVERSIONINFO
   Dim pos As Integer
   Dim sVer As String
   Dim sBuild As String
   
   osv.OSVSize = Len(osv)
   
   If GetVersionEx(osv) =  1  Then
   
     'PlatformId contains a value representing the OS
      win.PlatformID = osv.PlatformID
     
      Select Case osv.PlatformID
         Case VER_PLATFORM_WIN32s:   win.VersionName = "Win32s"
         Case VER_PLATFORM_WIN32_NT: win.VersionName = "Windows NT"
         
         Select Case osv.dwVerMajor
            Case  4 :  win.VersionName = "Windows NT"
            Case  5 :
            Select Case osv.dwVerMinor
               Case  0 :  win.VersionName = "Windows 2000"
               Case  1 :  win.VersionName = "Windows XP"
               Case  2 :  win.VersionName = "Windows 2003"
            End Select
            Case  6 :
                win.VersionName = "Windows Vista"
        End Select
                  
         Case VER_PLATFORM_WIN32_WINDOWS:
         
          'The dwVerMinor bit tells if its 95 or 98.
            Select Case osv.dwVerMinor
               Case  0 :    win.VersionName = "Windows 95"
               Case  90 :   win.VersionName = "Windows ME"
               Case Else: win.VersionName = "Windows 98"
            End Select
         
      End Select
   
   
     'Get the version number
      win.VersionNo = osv.dwVerMajor & "." & osv.dwVerMinor
  
     'Get the build
      win.BuildNo = (osv.dwBuildNumber And &HFFFF&)
       
     'Any additional info. In Win9x, this can be
     '"any arbitrary string" provided by the
     'manufacturer. In NT, this is the service pack.
      pos = InStr(osv.szCSDVersion, Chr$( 0 ))
      If pos Then
         win.ServicePack = Left$(osv.szCSDVersion, pos -  1 )
      End If

   End If
   
  #Else
  
    'can only return that this does not
    'support the 32 bit call, so must be Win3x
     win.VersionName = "Windows 3.x"
  #End If
  
End Function


Public Function IsWin95() As Boolean

'returns True if running Win95

   #If Win32 Then
  
      Dim osv As OSVERSIONINFO
   
      osv.OSVSize = Len(osv)
   
      If GetVersionEx(osv) =  1  Then
   
         IsWin95 = (osv.PlatformID = VER_PLATFORM_WIN32_WINDOWS) And _
                   (osv.dwVerMajor =  4  And osv.dwVerMinor =  0 )
                            
      End If

   #End If

End Function


Public Function IsWin98() As Boolean

  'returns True if running Win98
   Dim osv As OSVERSIONINFO

   osv.OSVSize = Len(osv)

   If GetVersionEx(osv) =  1  Then
   
      IsWin98 = (osv.PlatformID = VER_PLATFORM_WIN32_WINDOWS) And _
                (osv.dwVerMajor =  4  And osv.dwVerMinor =  10 ) And _
                (osv.dwBuildNumber >=  2222 )
                
   End If

End Function


Public Function IsWinME() As Boolean

'returns True if running Windows ME

   #If Win32 Then
  
      Dim osv As OSVERSIONINFO
   
      osv.OSVSize = Len(osv)
   
      If GetVersionEx(osv) =  1  Then
   
         IsWinME = (osv.PlatformID = VER_PLATFORM_WIN32_WINDOWS) And _
                   (osv.dwVerMajor =  4  And osv.dwVerMinor =  90 )
                            
      End If

   #End If

End Function


Public Function IsWinNT4() As Boolean

'returns True if running WinNT4

   #If Win32 Then
  
      Dim osv As OSVERSIONINFO
   
      osv.OSVSize = Len(osv)
   
      If GetVersionEx(osv) =  1  Then
   
        'PlatformId contains a value representing the OS.
        'If VER_PLATFORM_WIN32_NT and dwVerMajor is 4, return true
         IsWinNT4 = (osv.PlatformID = VER_PLATFORM_WIN32_NT) And _
                    (osv.dwVerMajor =  4 )
      End If

   #End If

End Function



Public Function IsWin2000() As Boolean

'returns True if running Windows 2000 (NT5)

   #If Win32 Then
  
      Dim osv As OSVERSIONINFO
   
      osv.OSVSize = Len(osv)
   
      If GetVersionEx(osv) =  1  Then
         IsWin2000 = (osv.PlatformID = VER_PLATFORM_WIN32_NT) And _
                     (osv.dwVerMajor =  5  And osv.dwVerMinor =  0 )
      End If

   #End If

End Function


Public Function IsWinXP() As Boolean

'returns True if running WinXP (NT5.1)

   #If Win32 Then
  
      Dim osv As OSVERSIONINFO
   
      osv.OSVSize = Len(osv)
   
      If GetVersionEx(osv) =  1  Then

         IsWinXP = (osv.PlatformID = VER_PLATFORM_WIN32_NT) And _
                   (osv.dwVerMajor =  5  And osv.dwVerMinor =  1 )
      End If

   #End If

End Function
Public Function IsWin2003() As Boolean

'returns True if running Win2003 (NT5.2)

   #If Win32 Then
  
      Dim osv As OSVERSIONINFO
   
      osv.OSVSize = Len(osv)
   
      If GetVersionEx(osv) =  1  Then

         IsWin2003 = (osv.PlatformID = VER_PLATFORM_WIN32_NT) And _
                   (osv.dwVerMajor =  5  And osv.dwVerMinor =  2 )
      End If

   #End If

End Function
Public Function IsWinVista() As Boolean

'returns True if running WinVista or Win2008 (NT6.0)

   #If Win32 Then
  
      Dim osv As OSVERSIONINFO
   
      osv.OSVSize = Len(osv)
   
      If GetVersionEx(osv) =  1  Then

         IsWinVista = (osv.PlatformID = VER_PLATFORM_WIN32_NT) And _
                   (osv.dwVerMajor =  6  And osv.dwVerMinor =  0 )
      End If

   #End If

End Function


Public Function GetWinVer() As String

'returns a string representing the version,
'ie "95", "98", "NT4", "WinXP"
   Dim osv As OSVERSIONINFO
   Dim r As Long
   Dim pos As Integer
   Dim sVer As String
   Dim sBuild As String
   
   osv.OSVSize = Len(osv)
   
   If GetVersionEx(osv) =  1  Then
   
     'PlatformId contains a value representing the OS
      Select Case osv.PlatformID
         Case VER_PLATFORM_WIN32s: GetWinVer = "32s"
         Case VER_PLATFORM_WIN32_NT:
                   
           'dwVerMajor = NT version.
           'dwVerMinor = minor version
            Select Case osv.dwVerMajor
               Case  3 :
               
                  Select Case osv.dwVerMinor
                     Case  0 :  GetWinVer = "NT3"
                     Case  1 :  GetWinVer = "NT3.1"
                     Case  5 :  GetWinVer = "NT3.5"
                     Case  51 : GetWinVer = "NT3.51"
                     Case  52 : GetWinVer = "NT3.52"
                  End Select
            
               Case  4 : GetWinVer = "NT 4"
               Case  5 :
               
                  Select Case osv.dwVerMinor
                     Case  0 :  GetWinVer = "Win2000"
                     Case  1 :  GetWinVer = "WinXP"
                     Case  2 :  GetWinVer = "Win2003"
                  End Select
               Case  6 :
                    GetWinVer = "WinVista"
            End Select
         
         Case VER_PLATFORM_WIN32_WINDOWS:
         
           'dwVerMinor bit tells if its 95 or 98.
            Select Case osv.dwVerMinor
               Case  0 :    GetWinVer = "95"
               Case  90 :   GetWinVer = "ME"
               Case Else: GetWinVer = "98"
            End Select
         
      End Select
         
   End If

End Function
'http://vbnet.mvps.org/index.html?code/system/getversionex.htm

Для Win 7 думаю надо заменить дополнительно 6=>7, руки не дошли пока.

А м.б. еще дополнительно и вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Option Explicit

'http://www.freevbcode.com/ShowCode.asp?ID=9043
Private Declare Function GetProcAddress Lib "kernel32" _
    (ByVal hModule As Long, _
    ByVal lpProcName As String) As Long
    
Private Declare Function GetModuleHandle Lib "kernel32" _
    Alias "GetModuleHandleA" _
    (ByVal lpModuleName As String) As Long
    
Private Declare Function GetCurrentProcess Lib "kernel32" _
    () As Long

Private Declare Function IsWow64Process Lib "kernel32" _
    (ByVal hProc As Long, _
    bWow64Process As Boolean) As Long
Private Declare Function GetSystemWow64Directory Lib "Kernel32.dll" _
Alias "GetSystemWow64DirectoryA" (ByVal lpBuffer As String, ByVal uSize As Long) As Long

Public Function Is64bit() As Boolean
    Dim handle As Long, bolFunc As Boolean

    ' Assume initially that this is not a Wow64 process
    bolFunc = False

    ' Now check to see if IsWow64Process function exists
    handle = GetProcAddress(GetModuleHandle("kernel32"), _
                   "IsWow64Process")

    If handle >  0  Then ' IsWow64Process function exists
        ' Now use the function to determine if
        ' we are running under Wow64
        IsWow64Process GetCurrentProcess(), bolFunc
    End If

    Is64bit = bolFunc

End Function

Public Function GetSystemWow64Dir() As String
Dim evar As String
Dim elen As Long
    evar = String( 256 , " ")
    elen = GetSystemWow64Directory(evar, Len(evar))
    If elen =  0  Then
        'ERROR_CALL_NOT_IMPLEMENTED= 120 (0x78) ???
        GetSystemWow64Dir = ""
    Else
        evar = Left(evar, InStr(evar, Chr( 0 )) -  1 )
        GetSystemWow64Dir = CorrectDir(evar)
    End If
End Function
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36631170
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Вы неправильно поняли, ему нужно вот это

Да я уж понял....

Ипаааать! Неужели попроще нельзя?
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36631185
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИпаааать! Неужели попроще нельзя?

Просто меня смущаеть, что это придется дописывать с выходом новых версий...
Кроме того.... есть же еще комплектации, типа Home/Pro
И опять же, я же вижу полное название в "Системе" или тот же C:\WINDOWS\system32\winver.exe выдает... Неужели нет какого-то ключика в реестре, одинакового для всех операционок?
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36631221
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИпаааать! Неужели попроще нельзя?
Куды проще? Все сложное я уже систематизировал, два модуля создать не сумеете? Я ж рабочий код выложил, пользуйтесь.
Shocker.ProПросто меня смущаеть, что это придется дописывать с выходом новых версий...
Ну, батенька, издержки производства, но это не сложно IsWin7 из этого сделать.Более того я думаю что для себя я объеденю Vista+Win7,надо тестировать, иначе придется дописывать код в куче мест.
Потом мы ж не знаем че там майкрософт придумает.
Напр. winXP/2003 различаются по минорам, а вот Vista/2008 это одно и то же.

Для работы программы этого достаточно. Программе надо знать куда она попала, чтобы корректно функционировать. На Хоме ей наплевать, а вот об x64 можно хорошо споткнуться, если об этом не позаботиться заранее. А если программа еще управляет установкой драйвера, то, сами понимаете, 32бит/64бит до Висты/64бит начиная с висты это оч-чень разные ситуевины.

А все эти Professional/Ultimate это весьма условно, но, думаю и на эту тему API существуют.
Вообще считаю извлекать чего-то из реестра это последнее дело, пользуюсь этим в крайних случаях. Тоже относится ко всем OCX, исключение для меня Common Controls, да и то вот второй месяц воюю потихоньку в связи с переходом v.6 => v.5, позарился в свое время на простоту и функциональность 6-ки.

Вообще ф-ционала vb достаточно для написания рабочих прог (довольно сложных причем), но если хочешь сделать конфетку и обернуть ее в красивый фантик, а этот фантик оч. много дает на самом деле, то надо вот так, с каждым пунктом возиться.
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36631222
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProC:\WINDOWS\system32\winver.exe выдает...
Иногда приходится кривить душой, и использовать через Shell системные утилиты (командная строка), в основном когда не надо читать информацию, а надо просто что-то сделать, типа
net start AAA
net stop BBB
но это лучше поверьте чем завязываться на OCX-ы, часто сомнительные.
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36631314
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это по проще. Пользуюсь давно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
'==========================================================
' Получить версию ОС
Public Function getOSVersion() As String
    Dim objWMIService As Object
    Dim colOperatingSystems As Object
    Dim objOperatingSystem As Object

    Set objWMIService = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" _
      & ".\root\cimv2")

    Set colOperatingSystems = objWMIService.ExecQuery _
      ("Select * from Win32_OperatingSystem")

    For Each objOperatingSystem In colOperatingSystems
      getOSVersion = objOperatingSystem.Caption & " " & _
                     objOperatingSystem.Version
    Next
End Function
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36633200
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bac,

WMI м.б. и проще. Я им пользуюсь для получения информации о модемах, установленных в системе, просто не нашел нужных API, м.б. плохо искал. Но конкретно в моем случае есть ситуация (которая с некот. вероятностью может случиться) когда в реестре есть некорректный entry, эдакий результат некорректной установки модема, что для слабоопытного юзера сотворить довольно легко. Т.е. все (корректно установленные впоследствии) модемы читаются в Панели Управления, работают и т.п., а из за этого бракованного Entry конкректно WMI не видит модемов вообще. А удалить эту кривость можно только либо переустановкой системы, либо зная место в реестве в ControlSet и имя класса из абракадабры буков-циферь. Вот из этого примера (можете поверить на слово, но описал конкретную ситуацию вполне понятным языком) можете судить о надежности WMI.

Ну... для указанной задачи прочесть имя системы м.б. и сгодится.
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36916143
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.,

а когда и чем отличаются
Имя_компа = WshNetwork.ComputerName
Имя_домена = WshNetwork.UserDomain
из Вашего скрипта???
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36916148
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю
а когда и чем отличаются
Имя_компа = WshNetwork.ComputerName
Имя_домена = WshNetwork.UserDomain
из Вашего скрипта???
Скорей всего, в большинстве случаев не отличаются. Но в WScript.Network эти свойства для чего-то созданы раздельно. Может и есть случаи, когда они неодинаковы.
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36916641
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь1973под которым работает программа на VB6?
Имя соответствующей Win32 API функции кто знает?
Спасибо.
я думаю, имя оси - "виндовс"
...
Рейтинг: 0 / 0
Как получить имя ОС компьютера?
    #36931539
Фотография Эникейщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю автору достаточно будет это инфы:
Код: plaintext
1.
2.
3.
Cls
For i =  1  To  255 
Print Environ(i)
Next i
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить имя ОС компьютера?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]