Windows kurulumunu tanımlamak için benzersiz bir GUID mi arıyorsunuz


15

Windows kurulumunda veya PC'sini tanımama yardımcı olacak Windows kayıt defterinde saklanan benzersiz bir GUID arıyorum.

GUID;

  • Her zaman var
  • Belirli bir Windows kurulumuna özgü olun, yani başka hiçbir bilgisayar aynı kimliğe sahip olamaz
  • Asla değişme

Çok teşekkürler


Neden SF ve SU'ya yazılmalı? superuser.com/questions/82484/…
MDMarra

Yanıtlar:


8

GUID'yi Windows kayıt defterinden alabilirsiniz, örneğin:

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

kodunuz C # veya başka bir programlama dilinde mi?
Tim

Windows 7 aracında kullandığım JavaScript.
friednail

1
C # ve Javascript çok benzer sözdizimine sahip mi?
Tim

Üzgünüm, söyleyemem, C # 'a aşina değilim. Bunlar basit bir kodun sadece 3 satırından oluşur, değişken tanım, dizgi değişmezi, yeni nesne oluşturma ve bir nesnenin yöntemine erişmek için bir nokta gösterimi kullanma içerir. Muhtemelen, dilleri karşılaştırmak için tonlarca başka kod yapısı vardır.
friednail

@ Zaman, sanırım C # kayıt defteri anahtarlarını okumakla ilgileniyor musunuz? Eğer öyleyse, belki bu SO soru sizin için yararlı olacaktır
friednail

7

Bu kurulumun sürücüsü başka bir sisteme taşınırsa bu sayının değişmesini veya aynı kalmasını bekliyor musunuz?

Yükleme hayalet veya başka bir şeyle klonlanırsa bu sayının değiştirilmesini bekler misiniz? Microsoft'un önerilerini takip ederek her zaman syspreped edilmiş sistemlere güvenebilir misiniz? Yüklemelerinizin asla klonlanmadığından emin olabilirseniz SID iyi olmalıdır.

Çoklu önyükleme sistemi (yani sistemde Windows 7 ve Windows XP yüklemesi varsa) durumunda, iki yüklemeyi benzersiz veya ilişkili veya ne olarak tanımlamanız gerekir?

Neden donanımın, belki de işlemci seri numarasının sunduğu bir şey değil, Windows kurulumunun bir parçası olmak için buna ihtiyacınız var? ?

Envanter amaçları için kullandığınız bir tür komut dosyası veya araç için bunu sorduğunuzu varsayıyorum?

Aracı ilk kez çalıştırıp neden LOCAL_MACHINE kayıt defteri kovanına kaydettiğinizde neden kendi numaranızı oluşturmuyorsunuz? Belki de ağ arabirimlerinden birinin donanım adresini içermesi gereken bir RFC4122 Tip 1 numarası kullanın. Bu şekilde, UUID'yi mevcut ağ bağdaştırıcılarıyla karşılaştırarak UUID'nin hala bu sisteme ait olup olmadığını kontrol edebilirsiniz.


2

Windows Ürün Kimliğini kullanmak istiyorsunuz. Bu, kısmen kurulu ürün anahtarından ve kısmen de ilk NIC'den işlemci seri numarası ve MAC adresi dahil olmak üzere donanım yapılandırmasından üretilen benzersiz bir sayıdır. Bu (biraz tarihli, ancak yine de geçerli) TechNet makalesinde bu konuyu okuyabilirsiniz . Ürün kimliği Sistem Bilgileri ekranında veya çeşitli yöntemlerle programlı olarak bulunabilir.

Sistem bilgisi


Kullanıcıların pencere lisansını tutan kayıt defteri
şurada

0

Bir Windows sunucusu olduğu varsayılarak, onu Win2k'den nasıl çıkaracağınızı anlatan bir bilgi tabanı makalesi var: KB224544 .

LDP.exe hala böyle çalışıyor, bilmiyorum ama olabilir.


Bu makale yalnızca Etki Alanı Denetleyicileri için geçerlidir.
MDMarra

Bilgi için teşekkür ederim, im tüm Windows sürümleri, XP ve üzeri bir GUID arıyorum im
user28967


0

Bir Windows kurulumunu tanımlamak istiyorsanız, şansınız olmayabilir. Kurumsal ortamlarda, iş istasyonları genellikle yüklü olanlardan ziyade görüntülenir. Bu görüntüden oluşturulan her bilgisayar aynı olacaktır.

Açıkladığınıza en yakın şey makinenin SID'sidir, ancak bu iki nedenden dolayı çalışmaz:

  1. Görüntüleyen Windows XP makineleri, birçok insanda olmayan NewSID'yi çalıştırmadığınız sürece aynı SID'ye sahiptir.
  2. Tek bir etki alanındaki tüm etki alanı denetleyicileri aynı makine SID'sini paylaşır.

Bu tanımlayıcıya ne için ihtiyacınız var? Mümkünse en iyi seçeneğiniz, kendinizinkini oluşturmak olabilir.


1
Görüntüleme sonrasında makineler syspreps ise SID farklı olacaktır. Eğer değilse (ki çoğu zaman değildirler) SID'ler aynı olacaktır.
mrdenny

0

En azından dünya çapında benzersiz ve kalıcı olması amaçlanan MAC adresini deneyebilirsiniz. Bu, çok fazla rahatsız etmeden bir makinenin IP'sini ve ana bilgisayar adını alabilmenizin de güzel bir avantajı olacaktır (ve Windows ile de sınırlı kalmayacaktır). Kayıt defterinde bulunma gereksiniminizi karşılamaz, ancak bunun için WMI kullanabilirsiniz.

Burada örnek komut dosyaları: http://www.winforums.com/showthread.php?t=8842


0

Sistem biriminin DriveId'i nasıl olur? Bu kimliğiWin32_Volume SystemVolume True ile giriş arayarak WMI sınıfından .

PowerShell'de:

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

(Elbette bu söylenebilir.)


0

Windows Update tarafından kullanılabilecek bir SID vardır. Yine, her seferinde benzersiz olacağına veya değişmeyeceğine dair bir garanti yoktur.

İhtiyaçlarınızı karşılayacak en yakın şeyin MAC adresi olacağını düşünüyorum, ancak NIC değiştirilirse bu durum değişebilir.

En iyi bahis kayıt defterine kendi GUID yazmak ve kullanmak olacaktır.


0

Belirli bir makinedeki makine SID'sini onaylamak için SysInternals PSGETSID% COMPUTERNAME% $ çalıştırabilirsiniz. (Alan Adı SID'si).

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

EDIT: Benzersiz (hatta doğru) olmayabilir kayıt defterindeki makine SID başvuruları kaldırıldı.


Hadi ama, birini modifiye edeceksen, en azından bir yorum bırak ve neyin yanlış olduğunu onlara bildir.
Matt Simmons


@Dennis - doğru. Yani bir etki alanındaysa: psgetsid.exe% bilgisayaradı% $ benzersiz bir tanımlayıcı üretir.
Greg Askew

@Greg: İş istasyonlarınızı görüntülerden oluşturursanız ne olur? Newsid çalıştırmadıysanız, hepsi aynı makine SID'sini paylaşacak.
Stephen Jennings

@Stephen - Etki Alanı SID'sini kullanmak bu sorunu giderir. blogs.msdn.com/aaron_margosis/archive/2009/11/05/…
Greg Askew

-1

Neden sadece bilgisayar adını kullanmıyorsunuz? Etki alanı içinde benzersiz olacak, tüm Windows kurulumları bir tane var ve sadece bir etki alanı yöneticisi bunu değiştirirse değişecektir, bu da bir düzeltme yapmadıkça asla gerekli olmamalıdır.


-2

Ben de, Windows kurulumlarını global olarak tanımlamanın bir yolunu bulmam gerekiyor. İlk olarak, yedek görüntüleri düzgün bir şekilde sınıflandırmak ve tanımlamak ve hangilerinin hangi makinelerde kurtarılacağını belirlemek için. İkinci olarak, dosyaları senkronize etmek için senkronizasyon çiftlerini adlandırmak ve senkronizasyonda yer alan makinelere bağlı olarak hangi senkronizasyon çiftinin kullanılacağını belirlemek için.

Bu web sitesindekiler de dahil olmak üzere çeşitli yayınları okuduktan sonra, Windows kurulumunun global olarak benzersiz bir tanımlayıcısını bulmanın kolay bir yolu olmadığı sonucuna varıyorum. Bu çok kötü. Donanım gibi, yazılımın da kendi seri numarası olmalıdır. Oh iyi! Bu yüzden benim geçici çözümüm: Tek bir global benzersiz tanımlayıcı bulmak yerine, Microsoft'un Windows'ta ağ sürücülerini adlandırma biçiminden ve Sanal PC'de paylaşılan klasörleri adlandırma şeklinden esinlenen bir hece ifadesi oluşturdum: "[WINDOWS PRODUCT ID ( değişken olarak )] [BİLGİSAYAR SERİ NUMARASI'na ( değişken olarak) yüklendiWindows üretim kimlik numarası yalnızca karşılık gelen ürün anahtarı olduğu sürece benzersiz olsa da, yine de, birkaç fabrikada, özellikle fabrikada yüklenmiş Windows içeren seri olarak üretilen bilgisayarlarda, ancak bir seri için aynı olmakla yükümlüdür. Numara benzersizdir ve bir makineden diğerine farklıdır.Yukarıdaki formül benim amacım için ihtiyacım olan tek şeydir; SID'ye ihtiyacım yok ( Güvenlik Tanımlayıcı'yı gösterdiğini düşünüyorum) veya daha karmaşık bir şey, çünkü her iki değişkenin kombinasyonu tam olarak tanımlamam gereken Windows kurulumuna atıfta bulunurken, her bir değişken kendi başına benim için hiçbir fayda sağlamaz. Özellikle ve ilk olarak, Windows ürün tanımlaması, aynı üretici tarafından üretilen ve aynı ürün hattında bulunan ve bana aynı amaca hizmet eden bilgisayarlarda aynıdır, çünkü birkaç özdeş makineye sahibim. İkincisi, seri numarası yeterince tanımlanmıyor, çünkü bir bilgisayarda bir bilgisayar seri numarasının ele almadığı birkaç Windows kurulumum var. Bu nedenle yöntemimi öneririm.

Ayrıca, ve bu konuda sormadan önce: Ben yöntem bilgisayar adına dayanmamayı seçti. Bilgiler kullanıcı tabanlıdır ve bu nedenle envantere ihtiyaç duyulmaktadır. Bununla birlikte, Windows ürün tanımlaması ve bilgisayar seri numarası zaten tanımlanmış, envanter edilmiş ve her zaman iki belirli ürüne bağlanmış, böylece tekrar envanter oluşturma ihtiyacı ortadan kaldırılmıştır. Ben de, özellikle sürücü kapasiteleri sabit bir akış durumundayken, onları bir makineden diğerine değiştirmeyi başardığım ve yapabildiğim için, sabit disklerin benzersiz bir tanımlayıcısına sahip bir Windows kurulumunu tanımlamayı seçmezdim. Aynı şekilde, daha önce bir önceki yanıtta önerildiği gibi, merkezi işlem ünitesinin veya anakartın tanımlayıcı isimlendirmesini çok daha az kullanacağım Shoeless'ın. Son olarak, Windows kurulumunu tanımlamanın en belirgin seçeneğini de reddediyorum (görebildiğimden başka kimse tarafından belirtilmemiş olsa da): ürün anahtarını kullanarak. Benzersiz olmasına rağmen, yalnızca belirli bir Windows sürümünü yüklemek için bir lisanstır; aslında belirli bir Windows kurulumuna bağlı değildir ve belirli bir bilgisayar satın alındığında lisans verildiği halde, onu belirli bir makineye yüklendiği gibi ayırt etmez.


3
Ve soruya cevabınız ...?
Deer Hunter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.