質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

WMIC

WMICは、WMIを操作するためのシステム管理コマンドです。WMICを使用すれば専用のシステム管理ツールを用いなくとも、WMIによって提供される情報を取得・操作できます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

241閲覧

HDDシリアル取得(WMI/GetVolumeInformation)の値は一致しないのでしょうか?

nrr-mgmg

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

WMIC

WMICは、WMIを操作するためのシステム管理コマンドです。WMICを使用すれば専用のシステム管理ツールを用いなくとも、WMIによって提供される情報を取得・操作できます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1グッド

0クリップ

投稿2024/03/25 01:49

質問内容

wmic diskdrive get SerialNumber
コマンドによる結果と
C++にて「GetVolumeInformation」を実行した結果が異なります。

GetVolumeInformationで同じ値を取得できないでしょうか?

前提

wmicにてシリアルを取得する方法とは別に
シリアルを取得したいと考えています。
GetVolumeInformation以外でも可能であれば、
別の方法をご享受したいです。

該当のソースコード

C++

1#include <iostream> 2#include <stdio.h> 3#include <string.h> 4#include <windows.h> 5 6int main() 7{ 8 TCHAR szRoot[16] = TEXT("E:\\"); 9 TCHAR szVolume[256]; 10 TCHAR szSystem[256]; 11 DWORD dwSerial; 12 DWORD dwLength; 13 DWORD dwFlags; 14 15 // ボリューム情報の取得 16 GetVolumeInformation(szRoot, 17 szVolume, sizeof(szVolume), 18 &dwSerial, &dwLength, &dwFlags, 19 szSystem, sizeof(szSystem)); 20 21 printf("シリアル:%x\n", dwSerial); 22 printf("シリアル:%08x\n", dwSerial); 23 printf("シリアル:%d\n", dwSerial); 24}

補足情報(FW/ツールのバージョンなど)

VS2022 C++
Windows 10

CrystalDiskinfo 9.2.3で確認した所
HDDはWMICと同じ結果になりましたが、NVMEのSSDは
どれとも一致しないので少し?です。

またGetVolumeInformationで取得する際、D:とE:は同じドライブの分割ですが
異なるシリアルナンバーを返します。

SaitoAtsushi👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

製造元が割り当てるハードディスクのシリアルナンバーを取得するには Win32_PhysicalMedia を使ってください。

投稿2024/03/25 04:39

SaitoAtsushi

総合スコア5448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nrr-mgmg

2024/03/25 04:47

ありがとうございます。 Win32_PhysicalMedia を使用しようとしましたが、ヘッダの参照不足?のためか クラスの参照ができません。 なにか追加が必要でしょうか?
nrr-mgmg

2024/03/25 05:02

海外サイト翻訳していたらQueryで使うような感じであることがわかりました。 この方法で取得した場合popenでwmicを使うのと同じ結果(wmicで失敗するケースの時)に なったりはしないでしょうか?
guest

0

GetVolumeInformation は HDDじゃなくてボリューム(C:とかD:とか)が対象かと思うので、
Win32_DiskDrive クラスの SerialNumber プロパティーかと思います。

投稿2024/03/25 04:35

otn

総合スコア84576

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nrr-mgmg

2024/03/25 04:47

ありがとうございます。 ありがとうございます。 Win32_PhysicalMediaと同様にWin32_DiskDrive を使用しようとしましたが、 ヘッダの参照不足?のためかクラスの参照ができません。 なにか追加が必要でしょうか?
nrr-mgmg

2024/03/25 05:02

海外サイト翻訳していたらQueryで使うような感じであることがわかりました。 この方法で取得した場合popenでwmicを使うのと同じ結果(wmicで失敗するケースの時)に なったりはしないでしょうか?
otn

2024/03/25 14:24

すみませんが、実際にコーディングした経験は無いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問