[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/09/26(Tue) 17:12
投稿者名:ともさん
Eメール:
URL :
タイトル:
VBで機種名を取得したい
VBというかAPIでパソコンの機種名を取得したいのですが識者の方ご教授下さい。

ここで言う機種名とはパソコン自体の形式番号と言う奴です。(VALUE STARとかFMVなんたらとか)

Windows2000での場合で、マイコンピュータ右クリック→管理→「コンピュータの管理」画面内の
→システムの概要→表示された一覧の中の「システム モデル」の値です。

ここで表示された値をレジストリから検索してみましたが見つかる機械と見つからない機械が有
ります。見つからない機械はスタンドアロン運用している機械でWindowsUpdateを行っていない
機械です。

レジストリからではなくAPIで取得出来る方法をご存知ありませんか?

#システム 情報 API でぐぐってもなんたら情報システム(株)とかしか出ない。orz

投稿時間:2006/09/26(Tue) 20:05
投稿者名:だい
Eメール:
URL :
タイトル:
Re: VBで機種名を取得したい
WMIでよろしければ、Win32_ComputerSystemクラスのModelプロパティで
'元ネタは、
'http://www.microsoft.com/japan/technet/scriptcenter/scripts/misc/wmi/mswmvb17.mspx
'WSHからの即席移植ですので汚いですが、

Function getWin32_ComputerSystem()
Dim objWMIService  As Object
Dim colSettings  As Object
Dim objComputer As Object
Dim strComputer As String

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    Set colSettings = objWMIService.ExecQuery _
        ("Select * from Win32_ComputerSystem")
    For Each objComputer In colSettings
        Debug.Print "System Name: " & objComputer.Name
        Debug.Print "System Manufacturer: " & objComputer.Manufacturer
        Debug.Print "System Model: " & objComputer.Model
        Debug.Print "Time Zone: " & objComputer.CurrentTimeZone
        Debug.Print "Total Physical Memory: " & _
            objComputer.TotalPhysicalMemory
    Next

End Function

投稿時間:2006/09/27(Wed) 15:08
投稿者名:ともさん
Eメール:
URL :
タイトル:
Re^2: VBで機種名を取得したい
> WMIでよろしければ、Win32_ComputerSystemクラスのModelプロパティで

ありがとうございます。Windows2000、XPにおいて正しく情報が取得出来ました。

しかし、WindowsNT4.0ではエラーが発生し取得出来ませんでした。

やりたいことと言えば機種ごとに搭載しているRAIDカードが違う為それを判定したい為でして、まぁ
各サーバのLocalに設定ファイルを置いておけば良いのですが、自動判定出来ないかと思っています。

APIでの取得方法を引き続きお待ちしてます。

投稿時間:2006/09/27(Wed) 16:04
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: VBで機種名を取得したい
> しかし、WindowsNT4.0ではエラーが発生し取得出来ませんでした。

下記では。
http://www.microsoft.com/japan/technet/scriptcenter/resources/wmifaq.mspx#EAC

投稿時間:2006/09/29(Fri) 11:19
投稿者名:あやめ
Eメール:
URL :
タイトル:
Re^3: VBで機種名を取得したい
> > WMIでよろしければ、Win32_ComputerSystemクラスのModelプロパティで
>
> ありがとうございます。Windows2000、XPにおいて正しく情報が取得出来ました。
>
> しかし、WindowsNT4.0ではエラーが発生し取得出来ませんでした。
>
> やりたいことと言えば機種ごとに搭載しているRAIDカードが違う為それを判定したい為でして
、まぁ
> 各サーバのLocalに設定ファイルを置いておけば良いのですが、自動判定出来ないかと思って
います。
>
> APIでの取得方法を引き続きお待ちしてます。

1)
Option Explicit
ユーザー名
Public Declare Function GetUserNameA Lib "advapi32.dll" (ByVal lpBuffer As Stri
ng, ByVal nSize As Long) As Long
コンピュ−タ名
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerN
ameA" _
(ByVal lpBuffer As String, nSize As Long) As Long


2)
    MyComputerName = ""
    nSize = 100
    lRet = GetComputerName(MyComputerName, nSize)

試してみてください

投稿時間:2006/09/29(Fri) 15:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: VBで機種名を取得したい
>     lRet = GetComputerName(MyComputerName, nSize)

GetComputerName では、パソコンの機種名は取得できないのでは。