Klucze licencyjne, w ogóle licencjonowanie Microsoftu to horror. Jeżeli jeszcze zaginą lub zniszczą się to katastrofa na całego. Pół biedy jak zauważymy, że coś się dzieje złego z nalepką licencyjną czy dyskiem i zrobimy papierową kopie tychże. Można się spierać co do legalności takich działań, EULA stanowi chyba, że licencja jest pełnoprawna kiedy mamy fakturę zakupu, nośnik i nalepkę. Bardziej mi jednak chodzi o ratowanie się w sytuacji kiedy np ostatni człon na nalepce uległ zniszczeniu lub zamazaniu.
Sytuacja więc wygląda tak. Jest sobie notebook z fabrycznie preinstalowanym Windowsem, dostarczony wraz z recovery partition. W komputerez tam niz tego ni z owego pada nam dysk. Kopia nie była robiona, natomiast szczęśliwie w całym biurze szaleje bacula czyli sieciowy backup. Nalepka jest jak już wspomniałem nieczytelna w skutek przetarcia się tu i ówdzie. Co należy zrobić:
1. Wsadzamy nowy dysk do notebooka i odpalamy czystą instalację Windowsa (w tym przypadku XP). Ja użyłem recovery CD zrobionego na komputerze tej samej firmy i modelu dość zbliżonym. W praktyce pójdzie każdy OEM, ważne aby się SP zgadzał.
2. Jeżeli system zainstaluje się bez pytania o klucz, trzeba sprawdzić czy dobrał odpowiedni klucz względem konfiguracji, jeśli nie trzeba go zmienić. Ja użyłem tego skryptu wyszukanego gdzieś na microsoft.com :) Ale najpierw skoro nie wiadomo jaki do końca ten klucz powinien być – przeczytaj punkt 3.
'
' WMI Script - ChangeVLKey.vbs
'
' This script changes the product key on the computer
'
'***************************************************************************
ON ERROR RESUME NEXT
if Wscript.arguments.count<1 then
Wscript.echo "Script can't run without VolumeProductKey argument"
Wscript.echo "Correct usage: Cscript ChangeVLKey.vbs ABCDE-FGHIJ-KLMNO-PRSTU-WYQZX"
Wscript.quit
end if
Dim VOL_PROD_KEY
VOL_PROD_KEY = Wscript.arguments.Item(0)
VOL_PROD_KEY = Replace(VOL_PROD_KEY,"-","") 'remove hyphens if any
for each Obj in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf ("win32_WindowsProductActivation")
result = Obj.SetProductKey (VOL_PROD_KEY)
if err <> 0 then
WScript.Echo Err.Description, "0x" & Hex(Err.Number)
Err.Clear
end if
Next
3. Teraz zaczyna się prawdziwa zabawa. Klucz ukryty jest gdzieś w rejestrze. Przy pomocy baculi robimy restore na jakiś działający komputer:
Z konsoli bconsole
wydajemy nastepujące polecenia (wytłuszczone):
Connecting to Director bacula:9101
1000 OK: 10.1.0.6 Version: 2.4.4 (28 December 2008)
Enter a period to cancel a command.
*restore
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Cancel
Select item: (1-12): 5
Defined Clients:
–CIACH–
26: zr2
–CIACH–
Select the Client (1-42): 26
Automatically selected FileSet: dyskcdefzr2
+--------+-------+----------+----------------+---------------------+------------+
| JobId | Level | JobFiles | JobBytes | StartTime | VolumeName |
+--------+-------+----------+----------------+---------------------+------------+
| 9,935 | F | 65,561 | 10,117,299,182 | 2009-05-04 15:09:25 | Vol0327 |
| 10,265 | I | 1,931 | 3,843,394,932 | 2009-05-12 11:06:02 | Vol0327 |
| 10,305 | I | 270 | 1,199,245,844 | 2009-05-13 10:56:08 | Vol0327 |
| 10,385 | I | 406 | 1,245,688,126 | 2009-05-15 10:41:57 | Vol0327 |
+--------+-------+----------+----------------+---------------------+------------+
You have selected the following JobIds: 9935,10265,10305,10385
Building directory tree for JobId 9935 ... ++++++++++++++++++++++++++++++++++++++++++++++
Building directory tree for JobId 10265 ... +
Building directory tree for JobId 10305 ...
Building directory tree for JobId 10385 ...
4 Jobs, 62,838 files inserted into the tree.
You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line.
Enter "done" to leave this mode.
cwd is: /
$ cd c:/
cwd is: c:/
$ mark WINDOWS
25,359 files marked.
$ done
Bootstrap records written to /var/spool/bacula/10.1.0.6.restore.2.bsr
The job will require the following
Volume(s) Storage(s) SD Device(s)
===========================================================================
Vol0327 zr2 zr2
25,359 files selected to be restored.
Run Restore job
JobName: RestoreFiles
Bootstrap: /var/spool/bacula/10.1.0.6.restore.2.bsr
Where: /tmp/bacula-restores
Replace: always
FileSet: Full Set
Backup Client: zr2
Restore Client: bacula
Storage: zr2
When: 2009-06-02 11:33:27
Catalog: MyCatalog
Priority: 10
OK to run? (yes/mod/no):yes
Jeśli wszystko poszło OK to na serwerze z baculą mamy w /tmp/bacula-restores
cały katalog WINDOWS sprzed awarii. Dzięki funkcji shadowcopy używanej przez baculę pliki systemowe używane przez Windows również są zbackupowane i możliwe do odtworzenia. Rejestr systemu jest przechowywany w %SysemRoot%/System32/config. Można go ręcznie przeglądać regeditem (trzeba ustawić się na kluczu HKEY_USERS i wybrać 'Ładuj gałąź rejestru’ lub 'Load Hive’ zależy w jakiej wersji językowej jest regedit :) ale klucze są zaszyfrowane więc nie zda się to na zawiele akurat (aczkolwiek jest wystarczające żeby wyeksportować np. hosty z putty).
4. Sciągamy więc odrestorowany katalog Windows na komputer z Windowsem i instalujemy Magical Jelly Bean Keyfinder . Uruchamiamy z prawami administratora, pierwsze co zobaczymy to nasz klucz Windowsa i ewentualnie inne klucze np od Office.
Wybieramy opcję Load Hive:
Wybieramy katlog który wcześniej udało nam się odrestorować:
Sukces! Mamy upragniony numer! (z oczywistych względów nie mogę pokazać, że jest to innym serial niż poprzednio, ale widać zmianę w pakiecie Office :)
Teraz jeśli potrzeba wracamy do punktu drugiego i zmieniamy klucz na właściwy. Windows powinien się zdezaktywować. Po ponownej aktywacji z właściwym kluczem wszystko powinno być ok.
Jeszcze raz NetBSD (przy pomocy baculi) zaoszczędza mnóstwa kłopotów :)
© odwiedź stronę http://maciejewski.org po więcej fajnych postów!