Windowsインストールを識別するための一意のGUIDを探す


14

WindowsのインストールまたはPCを識別するのに役立つ、Windowsレジストリに保存されている一意のGUIDを探しています。

GUIDは必須です。

  • 常に存在する
  • 特定のWindowsインストールに固有である、つまり他のコンピューターが同じIDを持たない
  • 変わらない

どうもありがとう


SFとSUに投稿する理由 superuser.com/questions/82484/...
MDMarra

回答:


7

そのインストール用のドライブが別のシステムに移動された場合、この数値は変更されるか、または同じままになると思いますか?

インストールがゴーストなどで複製された場合、この数値が変更されると思いますか?マイクロソフトの推奨事項に従って、常にクローンシステムがsysprepされることに依存できますか?インストールが複製されないことが確実であれば、SIDは問題ないはずです。

マルチブートシステム(つまり、システムにWindows 7とWindows XPがインストールされているシステム)の場合、2つのインストールを一意、または関連、または何として識別する必要がありますか?

これがWindowsのインストールの一部であり、ハードウェア、おそらくプロセッサのシリアル番号によって提示されるものではないのはなぜですか?

インベントリ目的で使用している何らかのスクリプトまたはツールについて、これについて質問していると思いますか?

ツールを初めて実行して自分の番号を生成し、それをLOCAL_MACHINEレジストリハイブに保存しないのはなぜですか。おそらく、RFC4122 Type 1番号を使用することもできます。これには、ネットワークインターフェイスのいずれかのハードウェアアドレスが含まれている必要があります。このように、UUIDを現在のネットワークアダプターと比較することで、UUIDがまだそのシステムに属しているかどうかを確認できます。


7

たとえば、WindowsレジストリからGUIDを取得できます。

var regpath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid";
var oWSS = new ActiveXObject("WScript.Shell");
clientGUID = oWSS.RegRead(regpath);

あなたのコードはC#または他のプログラミング言語ですか?
Tim

これは、Windows 7ガジェットで使用したJavaScriptです。
フリードネイル2017年

1
C#とJavaScriptの構文は非常に似ていますか?
Tim

申し訳ありませんが、C#についてはよく知りません。これらは、わずか3行の単純なコードであり、変数定義、文字列リテラル、新しいオブジェクトの作成、およびドット表記を使用してオブジェクトのメソッドにアクセスします。おそらく、言語を比較するための別のコード構造がたくさんあります。
フリードネイル2017年

@ティム、私はあなたがC#でレジストリキーを読むことに興味があると思いますか?もしそうなら、多分このSOの質問はあなたに役立つでしょう
friednail

2

WindowsプロダクトIDを使用したい。これは、一部はインストールされているプロダクトキーから、一部はハードウェア構成から生成(ハッシュ)された一意の番号で、プロセッサのシリアル番号と最初のNICからのMACアドレスが含まれます。TechNetのこの記事(多少古くなっていますが、まだ有効です)でそれについて読むことができます。製品IDは、[システム情報]画面に表示されるか、いくつかの方法でプログラムで確認できます。

システムインフォメーション


HKEY_LOCAL_MACHINE \ SOFTWARE \マイクロソフト\ Windows NTの\ CurrentVersionの、それを読むのに必要な特別なトリック:ユーザーウィンドウライセンスがに位置して保持しているレジストリ
ウォルターVehoeven

0

それがWindowsサーバーであると仮定すると、Win2kからそれを取得する方法について説明しているナレッジベースの記事:KB224544があります。

LDP.exeがまだそのように動作するかどうかはわかりませんが、可能性はあります。


この記事は、ドメインコントローラにのみ適用されます。
MDMarra

イムは、すべてのバージョンのWindows、XPおよび上記上に存在するであろうGUIDを探して、情報をありがとう
user28967


0

Windowsインストールを特定しようとしている場合は、運が悪い場合があります。企業環境では、ワークステーションはインストールされているワークステーションではなく、イメージ化されることがよくあります。このイメージから構築された各コンピューターは同一です。

説明した内容に最も近いのはマシンのSIDですが、これは2つの理由で機能しません。

  1. イメージ化されたWindows XPマシンは、それらに対してNewSIDを実行しない限り同じSIDを持ちますが、多くの人はそうではありません。
  2. 単一ドメイン上のすべてのドメインコントローラーは、同じマシンSIDを共有します。

この識別子は何のために必要ですか?あなたの最善の策は、可能であれば自分で生成することかもしれません。


1
イメージング後のマシンがsysprepの場合、SIDは異なります。そうでない場合(多くの場合そうではない)、SIDは同じになります。
mrdenny、2009

0

MACアドレスを試すことができます。これは、少なくともグローバルに一意で永続的なものにすることを目的としています。これには、あまり手間をかけずにマシンのIPとホスト名を取得できるという優れた利点もあります(Windowsに限定されません)。レジストリに存在するという要件を満たしませんが、代わりにWMIを使用できます。

ここにサンプルスクリプト:http : //www.winforums.com/showthread.php?t=8842


0

システムボリュームのDriveIdはどうですか?Win32_VolumeSystemVolume Trueのエントリを探すことにより、WMIクラスからIDを取得できます。

PowerShellの場合:

gwmi win32_volume -filter 'SystemVolume=true' | ft -a DriveLetter,SystemVolume,DeviceId

(これはもちろんリモートにできます。)


0

Windows Updateで使用できるSIDがあり、それを使用できる場合があります。繰り返しますが、それが毎回一意である、または変化しないという保証はありません。

あなたのニーズを満たすために最も近いものはMACアドレスだと思いますが、NICが交換された場合、それは変わる可能性があります。

最善の策は、レジストリに独自のGUIDを書き込み、それを使用することです。


0

特定のマシンのマシンSIDを確認するには、SysInternals PSGETSID%COMPUTERNAME%$を実行します。(ドメインSID)。

http://blogs.msdn.com/aaron_margosis/archive/2009/11/05/machine-sids-and-domain-sids.aspx

編集:一意ではない(または正しくない)レジストリのマシンSIDへの参照を削除しました。


誰かを改造するつもりなら、少なくともコメントを残して、何が悪いのかを彼らに知らせてください。
Matt Simmons、

マシンのSIDは一意であることが保証されていません。blogs.technet.com/markrussinovich/archive/2009/11/03/...
追って通知があるまで一時停止しました。

@デニス-そうです。ドメインにある場合:psgetsid.exe%computername%$は一意の識別子を生成します。
Greg Askew、

@Greg:イメージからワークステーションを構築するとどうなりますか?newsidを実行しなかった場合、それらはすべて同じマシンSIDを共有します。
スティーブンジェニングス

@Stephen-ドメインSIDを使用すると、その問題に対処できます。 blogs.msdn.com/aaron_margosis/archive/2009/11/05/...
グレッグ・アスキュー

-1

コンピュータ名だけを使用しないのはなぜですか?ドメイン内で一意になるため、すべてのWindowsインストールには1つあり、ドメイン管理者が変更しない限り変更されません。修正しない限り、これは必要ありません。


-2

私も、Windowsインストールをグローバルに一意に識別する方法を見つける必要があります。まず、バックアップイメージを適切に分類して識別し、どのマシンでどのイメージを回復するかを決定するため。次に、ファイルを同期するための同期ペアに名前を付け、同期に関与するマシンに応じて使用する同期ペアを決定します。

このWebサイトの投稿を含むいくつかの投稿を読んだ後、Windowsインストールのグローバルに一意の識別子を見つける簡単な方法はないと結論付けました。それは残念です。ハードウェアと同様に、ソフトウェアにも独自のシリアル番号が必要です。しかたがない!したがって、これが私の回避策です。単一のグローバル一意識別子を見つける代わりに、MicrosoftがWindowsでネットワークドライブに名前を付ける方法と、Virtual PCの共有フォルダーに名前を付ける方法に触発された定型文を作成しました: "[WINDOWS製品ID(変数として)] [コンピュータのシリアル番号(変数として))]。 "WindowsプロダクションID番号は、対応するプロダクトキーが一意である場合にのみ一意ですが、それでも、特に工場出荷時のWindowsを含む大量生産されたコンピューターではシリアル番号が同じであるが、シリアル番号は一意であり、マシンごとに異なります。上記の式は、目的に必要なすべてです。SIDは必要ありません(これは、セキュリティ識別子を意味すると想定しています))または他のより複雑なものです。両方の変数の組み合わせは、特定する必要があるWindowsインストールを正確に参照するためです。一方、個々の変数は、それ自体では、私にとっては役に立ちません。具体的には、最初に、Windows製品の識別情報は、同じ製造元で製造され、同じ製品ラインにあるコンピューターでも同じであり、同じマシンを複数所有しているため、目的がありません。第2に、1つのコンピューターに複数のWindowsインストールがあり、コンピューターのシリアル番号が対応していないため、シリアル番号は十分に一意に識別できません。したがって、私の方法を提案します。

また、それについて尋ねる前に、私は自分の方法をコンピューター名に基づいて選択しないことを選択しました。情報はユーザーベースであるため、インベントリを作成する必要があります。ただし、Windowsの製品IDとコンピューターのシリアル番号は既に特定され、インベントリされ、常に2つの特定の製品に接続されているため、それらを再度インベントリする必要はありません。特にドライブの容量が絶え間なく変化する状態にある場合、ハードディスクをマシン間で切り替えることができるため、Windowsインストールをハードドライブの一意の識別子で識別することも選択しません。同じトークンで、これまでShoelessによる以前の返信で提案されたように、中央処理装置またはマザーボードの識別用語をあまり使用しません。。最後に、Windowsインストールを識別する最も明白なオプションも拒否します(ただし、他の人からは言及されていませんが)。プロダクトキーを使用します。これは独特ですが、特定のバージョンのWindowsをインストールするためのライセンスにすぎません。特定のWindowsインストールに実際には接続されておらず、特定のコンピューターの購入によってライセンスが付与された場合でも、特定のマシンにインストールされているとは区別されません。


3
そして質問に対するあなたの答えは...?
鹿ハンター14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.