版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
最近很多筆記本出現(xiàn)啟動就進BIOS,而且無法設(shè)置從硬盤啟動,不能正常啟動Windows系統(tǒng)的問題。似乎華碩的中招較多?從貼吧盜一張圖,效果如下http://tieba.baidu.eom/p/48401209412.17--CQDyrXfhieelm伯ftnusrkc*nnir?Btrnndl=u導(dǎo)致這個問題的直接原因一般是分區(qū)表數(shù)據(jù)損壞了。也可能是硬盤存在硬件問題,還可能只是BIOS設(shè)置和裝機小哥的習慣對不上。其實最近幾天還碰到比較玄學(xué)的狀況,最后找到了繞過方法也一頭霧水......根本原因是什么?抱歉,我不清楚。如果你對根本原因有興趣......可以在找回分區(qū)之前,用BOOTICE、DiskGenius等工具備份出硬盤空間開頭和結(jié)尾的一些數(shù)據(jù)(2048個扇區(qū)也許就夠了),說不定保存下“兇殺現(xiàn)場”有助于定位兇手......(別找我,我可沒這能耐)不過......在碰到這個問題的電腦上,用BOOTICE打開LBA0,發(fā)現(xiàn)里面似乎是NT5的VBR代碼......不知道是什么情況。自我吐槽:硬盤存在硬件問題、BIOS引導(dǎo)設(shè)置不對一一啊,這不已經(jīng)列出了2條可能的根本原因了么?你可以按我的經(jīng)驗折騰一下試試。首先還原BIOS默認設(shè)置。按-L鍵切換到Save&Exit頁面,按LI鍵選擇RestoreDefaults,回車,再選擇SaveChangesandExit,回車,彈出確認提示,選擇Yes,再回車。自我吐槽:其實界面右下方就有操作說明啊......用得著描述得那么啰嗦么......說不定還原完了就完全恢復(fù)正常,不需要折騰了呢!聯(lián)想筆記本的SeeureBoot可能比較變態(tài)啟用SeeureBoot時從U盤啟動可能會碰到問題或者干脆被拒絕啟動需要關(guān)閉SeeureBoot才行——但我試過的華碩筆記本還不至于這樣?!?,我想起來了,幾個月前找樓下XX電腦店重裝過系統(tǒng)來著......當時整個硬盤都給清空啦!華碩出廠安裝的Win8/8.1/10都是UEFI引導(dǎo)+GPT分區(qū)表,不需要關(guān)閉SeeureBoot也不需要啟用LaunchCSM。裝機小哥們可能習慣于使用LegaeyBIOS引導(dǎo)+MBR分區(qū)表。如果那位小哥已經(jīng)這么干了,目刖的狀況就解釋得通了硬盤里沒有ESP(EFI系統(tǒng)分區(qū)),也沒有用于UEFI的引導(dǎo)文件,所以BIOS(其實應(yīng)該改叫UEFI固件了)掃描完硬盤,-個引導(dǎo)選項也列不出來?!湓捑褪荁IOS的引導(dǎo)設(shè)置不對。在BIOS里,轉(zhuǎn)到Security頁面,把SecureBoot設(shè)為Disabled,再轉(zhuǎn)到Boot頁面,將LaunchCSM設(shè)為Enabled,按F10保存并重啟,就可以正常啟動。讀到了這里,你可能沒那么幸運?啊,很不幸,下面的步驟~非常~非常~折騰……是否繼續(xù)要看你的選擇了。下面你需要用WinPE啟動U盤啟動有問題的電腦??梢杂梦E(),下載64位版,安裝到U盤,安裝時要選擇支持UEFI的方案。安裝前別忘了把U盤里的文件拷出來!不拷出來文件就沒了!然后下載好gdisk(/projects/gptfdisk),放在U盤里備用。順便說一下,微PE自帶的bcdboot好像有點問題,可能會報錯“無法復(fù)制啟動文件”你可以試試我從Win10安裝盤里拷出來的bcdboot.exe(/s/1skOIAmT,密碼aunu*啟動WinPE后,用它替換掉X:\Windows\System32\bcdboot.exe即可。啟動WinPE后可以用HDTune等軟件檢查SMART信息。如果硬盤硬件有問題,下面這些軟件層面的操作肯定是沒用的(可能第一步打開磁盤就卡住/報錯了)。但是你的RP一般不至于那么壞......雖然硬盤的壽命是有限的。如果你的硬盤上有非常重要的數(shù)據(jù),保險起見,請你聯(lián)系專業(yè)的數(shù)據(jù)恢復(fù)公司。只是拿來刷刷貼吧的話,大概就不用大動干戈了吧......然后你可以打開DiskGenius。軟件界面左邊就是硬盤、分區(qū)列表(盜一張圖??匆姺謪^(qū)、目錄層次圖了吧?)點擊選擇你的硬盤(一般是HD0),檢查你的硬盤是不是丟失了所有分區(qū)。1.如果每個分區(qū)都被DiskGenius列出了,那就點“開始”菜單->計算機,看看熟悉的C盤、D盤是否還都能點開、看到文件。(也許被分配到E:、F:等其他的盤符,但我相信,改了盤符你也是能認出來的~)貌似都沒問題?你的分區(qū)很可能沒丟。你可以先跳過下面俄回分區(qū)”的步驟。如果所有分區(qū)已經(jīng)消失不見,你就需要找回分區(qū)。如何找回分區(qū)?DiskGenius具備搜索丟失分區(qū)的功能。如果你熟悉DiskGenius,可以用它搜索丟失的分區(qū)。不過DiskGenius搜索到的分區(qū)位置并不一定是正確的,尤其是你以前調(diào)整過分區(qū)時。你需要根據(jù)自己的經(jīng)驗不斷猜測、調(diào)整。我身邊有的朋友就用DiskGenius搜索分區(qū)時,首先搜到的是錯誤的分區(qū)布局。所以,推薦你先嘗試用gdisk來找回分區(qū)。但是gdisk恢復(fù)出來的也不一定是正確的......gdisk可能會恢復(fù)出早已無效的GPT數(shù)據(jù),這樣恢復(fù)完成后,當然還是不能訪問每個分區(qū)中的文件。那樣的話還是要用回DiskGenius。下面使用gdisk來找回分區(qū)。其實很簡單……你只需要雙擊gdisk64.exe,然后對著它的黑窗口輸入以下幾行命令就可以了。(如果提示你是否繼續(xù)XXX?(Y/N),先輸入y再繼續(xù))\\.\PhysicalDrive0rbcw這樣很瘋狂對吧......所以你大概會看我先操作一遍?我的情況和你碰到的可能并不一樣......下面是我用虛擬磁盤模擬的結(jié)果。但實際上我的確這樣恢復(fù)了好幾臺筆記本。黑色是軟件輸出,紅色是我的輸入,綠色是我后來加的注釋。GPTfdisk(gdisk)version1.0.0Typedevicefilename,orpress<Enter>toexit:\\.\PhysicalDrive0一般內(nèi)置硬盤是PhysicalDriveOCaution:invalidmainGPTheader,butvalidbackup;regeneratingmainheaderfrombackup!我只覆蓋了LBA0-64,所以備份GPT頭(位于磁盤空間末尾)沒有被破壞掉。Caution!Afterloadingpartitions,theCRCdoesn'tcheckout!Warning!MainpartitiontableCRCmismatch!Loadedbackuppartitiontableinsteadofmainpartitiontable!備份GPT分區(qū)表(位于磁盤空間末尾)也沒被我破壞Warning!OneormoreCRCsdon'tmatch.Youshouldrepairthedisk!警告:CRC校驗不符(因為磁盤空間開頭的GPT數(shù)據(jù)全被我破壞了)Partitiontablescan:MBR:MBRonlyBSD:notpresentAPM:notpresentGPT:damagedFoundvalidMBRandcorruptGPT.Whichdoyouwanttouse?(UsingtheGPTMAYpermitrecoveryofGPTdata.gdisk找到了有效的MBR(實際上并不是,磁盤管理里一個分區(qū)也沒識別出來)和受損的GPT-MBR-GPT-CreateblankGPT創(chuàng)建空白GPTYouranswer:2先看看現(xiàn)有的GPT內(nèi)容吧在gdisk中,只要不輸入w命令,硬盤上的內(nèi)容就不會被gdisk寫入、修改。你可能看到的不是1/2/3,而是Y/N的選項,可以輸入y繼續(xù),然后嘗試找回正確的分區(qū)表,再輸入w寫入請謹慎操作,輸入w之前一定要三思!Command(?forhelp):p輸入?即可查看命令列表。p命令可以列出GPT分區(qū)表的內(nèi)容Disk\\.\PhysicalDrive2:2147483648sectors,1024.0GiBLogicalsectorsize:512bytesDiskidentifier(GUID):123456-1234-1234-1234-123456789012Partitiontableholdsupto128entriesFirstusablesectoris34,lastusablesectoris2147483614Partitionswillbealignedon2048-sectorboundariesTotalfreespaceis2014sectors(1007.0KiB)下面輸出了分區(qū)表的內(nèi)容(還在內(nèi)存里,沒被寫入硬盤)。其中Code一欄是分區(qū)類型代碼,它決定了分區(qū)的類型:EF00:EFI系統(tǒng)分區(qū)(即ESP),用來存放引導(dǎo)文件。如果它丟失了,就不能從硬盤正常啟動系統(tǒng)了,但它二般很容易重建2700:恢復(fù)分區(qū),存放WinRE鏡像、出廠時安裝的系統(tǒng)鏡像等文件0700:基本數(shù)據(jù)分區(qū),也就是平時能看見的C盤、D盤、E盤等0C01:MSR分區(qū),如果你沒有在用動態(tài)磁盤,它不會含有任何有用數(shù)據(jù),但也不必刪除它Size這一欄則是分區(qū)大小,可以幫助你判斷分區(qū)表是否正確!Name這一欄是分區(qū)的名字,但它并不是卷標,在Windows里是不顯示的Start(sector^End_(sedor)是分區(qū)起始位置和終止位置,這兩個值決定了分區(qū)在硬盤上的位置注意Number值并不二定對應(yīng)分區(qū)在磁盤空間上排列的順序!NumberStart(sector)End(sector)SizeCodeName12048206847100.0MiBEF00EFIsystempartitionEFI系統(tǒng)分區(qū)(即ESP)2WinRE206848821247300.0MiB2700Basicdatapartition恢復(fù)分區(qū),從大小(300MB)上看,應(yīng)該存有38212481083391128.0MiB0C01MicrosoftreservedMSR分區(qū),經(jīng)常位于C盤之前41083392210798591100.0GiB0700BasicdatapartitionC盤52107985922106519551904.0GiB0700BasicdatapartitionD盤62106519552214748361419.5GiB2700WindowsRE恢復(fù)分區(qū),從大小(>8GB)上看,應(yīng)該存有出廠系統(tǒng)鏡像和WinRECommand(?forhelp):r進入恢復(fù)/變換菜單Recovery/transformationcommand(?forhelp):b使用備份GPT頭重建主GPT頭Recovery/transformationcommand(?forhelp):c使用備份GPT分區(qū)表重建主GPT分區(qū)表Warning!Thiswillprobablydoweirdthingsifyou'veconvertedanMBRtoGPTformandhaven'tyetsavedtheGPT!Proceed?(Y/N):y雖然我已經(jīng)成功恢復(fù)好幾臺筆記本了,但是一如果你的電腦被電腦店重裝過系統(tǒng),硬盤可能早就被裝機小哥轉(zhuǎn)為MBR分區(qū)表了。繼續(xù)恢復(fù)的話,雖然能恢復(fù)出看似正常的分區(qū)結(jié)構(gòu),但分區(qū)表是“驢頭不對馬嘴”的,寫入后當然還是不能訪問每個分區(qū)的數(shù)據(jù)。
請你根據(jù)分區(qū)大小等數(shù)據(jù)進行判斷。如果和印象不符,請輸入q退出gdisk。這里先輸入y繼續(xù)Recovery/transformationcommand(?forhelp):p看看剛剛從備份GPT里讀取出的分區(qū)表是什么樣Disk\\.\PhysicalDrive2:2147483648sectors,1024.0GiBLogicalsectorsize:512bytesDiskidentifier(GUID):123456-1234-1234-1234-123456789012Partitiontableholdsupto128entriesFirstusablesectoris34,lastusablesectoris2147483614Partitionswillbealignedon2048-sectorboundariesTotalfreespaceis2014sectors(1007.0KiB)這里輸出了和前面一模一樣的分區(qū)表。但你有可能在前面看見了不正確的分區(qū)表,直到這里才看見正了的分區(qū)表,或反之。NumberStart(sector)End(sector)S120482068472NumberStart(sector)End(sector)S120482068472206848821247WinRE382124810833914108339221079859152107985922106519551621065195522147483614鏡像如果硬盤上有非常重要的數(shù)據(jù)Name100.0MiBEF00EFIsystempartitionEFI系統(tǒng)分區(qū)(即ESP)300.0MiB2700Basicdatapartition恢復(fù)分區(qū),從大小(300MB)上看,應(yīng)該存有128.0MiB0C01MicrosoftreservedMSR分區(qū),經(jīng)常位于C盤之前100.0GiB0700BasicdatapartitionC盤(100GB)904.0GiB0700BasicdatapartitionD盤(900GB)19.5GiB2700WindowsRE恢復(fù)分區(qū),從大小(>8GB)上看,應(yīng)該存有出廠系統(tǒng),請你輸入q退出gdisk,停止操作,聯(lián)系專業(yè)的數(shù)據(jù)恢復(fù)公司。Recovery/transformationcommand(?forhelp):w先確認分區(qū)信息無誤,再輸入w執(zhí)行寫入。Finalcheckscomplete.AbouttowriteGPTdata.THISWILLOVERWRITEEXISTINGPARTITIONS!!寫入后會覆蓋現(xiàn)在硬盤上的數(shù)據(jù)Doyouwanttoproceed?(Y/N):y繼續(xù)OK;writingnewGUIDpartitiontable(GPT)to\\.\PhysicalDrive0.Disksynchronizationsucceeded!Thecomputershouldnowusethenewpartitiontable.同步完成,系統(tǒng)應(yīng)該會讀取新寫入的分區(qū)表。Theoperationhascompletedsuccessfully.操作成功完成順利的話,你就可以看見文件夾窗口里的C盤、D盤等一個一個重新出現(xiàn)了。
如果你的分區(qū)本來就沒丟,那也可以在這里繼續(xù)了。下面的工作是重設(shè)引導(dǎo)。正常Windows的引導(dǎo)模式/分區(qū)表格式組合是UEFI/GPT和LegacyBIOS/MBR。如果你愿意折騰,其他組合也是可行的,但也許是不靠譜的。請打開DiskGenius,重新在左側(cè)的列表選擇你的硬盤,看看分區(qū)表類型:莊標識起柏柱面磁頭扇區(qū)銘止柱面磁頭翊0C37E&332069343001^4254序刊號:分區(qū)表類型:20030015196100000IMBSI總寶節(jié)數(shù):扇區(qū)大?。何锢砩葏^(qū)大小1030225920512Bytes512lytts1)如果分區(qū)表類型是GPT:先給ESP分配盤符S:,可以用diskpart完成:在命令提示符中輸入diskpart并回車,啟動diskpart,等待“DISKPART>”提示符出現(xiàn)就可以輸入命令了。找到系統(tǒng)分區(qū),使用assi(assign命令的縮寫)命令分配盤符即可。操作截圖如下:i2G4枷118RRA分區(qū)皿美型大八偏移量I£KPftm>pa?t2ISl<rftm>listp*rt璽3現(xiàn)在是所選魅?I£KPf1HT>scldiofc0op^rlgrht<C51J99-2912MicrosoftCorpo^ation.玖千算機上:WINDOWSaPELcro-softDislcPart.版本&-2.92083MJs?i*?\Ddfau11>dislicrosofi2G4枷118RRA分區(qū)皿美型大八偏移量I£KPftm>pa?t2ISl<rftm>listp*rt璽3現(xiàn)在是所選魅?I£KPf1HT>scldiofc0op^rlgrht<C51J99-2912MicrosoftCorpo^ation.玖千算機上:WINDOWSaPELcro-softDislcPart.版本&-2.92083MJs?i*?\Ddfau11>dislicrosoftWindoLis[版蘋B.2.9290]c)2012MicFn^aiftCapj^avations.保留所有權(quán)不I..L|v,區(qū)2現(xiàn)在是所選分區(qū)“ISl<rART>Ici^silettereI送成財?shù)胤峙淞?網(wǎng)壟號或裝載熾ISMPflRT?exitIlHDi辦Part:\Usei*£\Defsuit重新啟動,按F2進入BIOS,在Save&Exit頁面選擇LoadDefaults恢復(fù)默認設(shè)置,然后保存并重啟。如果這樣設(shè)置完還是不能從硬盤啟動、開機直接進BIOS,你可以試試這種比較玄學(xué)的操作:打開DiskGenius,先刪掉ESP分區(qū)然后縮小C盤,在擠出的可用空間里新建一個ESP分區(qū)分區(qū)類型選擇EFISystemPartition,注意要用FAT32文件系統(tǒng)格式化!保存更改后,再嘗試用bcdboot命令重建引導(dǎo)。2)如果分區(qū)表類型是MBR:首先,啟動DiskGenius,在界面左側(cè)的列表中選擇你的硬盤,在DiskGenius里選擇”硬盤”-“重建主引導(dǎo)記錄(MBR)”。然后,在DiskGenius里找到C盤,激活當前分區(qū)(可能分區(qū)已經(jīng)被激活,所以菜單里只有取消激活狀態(tài)不是灰色的),然后點DiskGenius界面上方的保存更改。接著,重命名C:\Boot這個文件夾。如果你不耐煩那就刪掉吧,不過里面可能還裝著GHOST備份、DOS工具箱之類的東西。最后運行這個命令:bcdbootC:\Windows/lzh-CN/fBIOS/sC:盜版Win7可能會碰到一個問題:雖然能啟動,但是系統(tǒng)激活失效了。很抱歉,我不能保證手頭激活工具的安全性,它們也都被百度云封殺了。常見的激活工具都會使用GRLDR或5個隨機字母/數(shù)字作為生成的引導(dǎo)文件名如N4FPQ并且設(shè)置上隱藏、系統(tǒng)等屬性,大小約幾百KB,保存在某分區(qū)根目錄下。如果你找到了這樣的文件,可以先把它拷到C盤根目錄下。然后,用BOOTICE寫入grub4dos的PBR,激活工具生成的引導(dǎo)文件被執(zhí)行后,會在系統(tǒng)啟動前偽造SLIC:*<BOOTICEv1.3.3x64-byPauly物理磁盤城盤檎椽引⑦煽輯實用工具UEFI命令行參數(shù)關(guān)于使用諷用IBOOTXE可星于安裝殉[網(wǎng)成盆胡J主引導(dǎo)記錄或分區(qū)上的弓導(dǎo)記錄。支持的引甘程序三要有M三Gnjb2.rSv^LinuxrPlopBootUFS,MS£CS及WindowsbT5等『此外,BOOTTCE還提片扇區(qū)蝙情、扇區(qū)督份與恢復(fù)、分區(qū)管理、磁盤重新%區(qū)以&分區(qū)格由七爭迎字目/選擇你的硬盤=刷新伊)主引導(dǎo)記錄分區(qū)引導(dǎo)記錄訴)分區(qū)管理筋)扇區(qū)偏輯httpMWwwJpalhlyxom退出(X)分區(qū)引導(dǎo)記呈〔pg)XH片蜂反二一要更改的罵型MSMS新^程豚{fAT/FAT12J'?GRUMDOSD4.5cU46aIfAT^FAf3ZNRSEmFAT)'分醫(yī)引導(dǎo)扇區(qū)上由SRUF.^OS引喜程序’引導(dǎo)根目錄下的GRLOR.W用2扇區(qū))NTE.DR專1導(dǎo)程序{fAT,'FAT32/NTFS]Q300TMGR弓|導(dǎo)程摩(FATrFAT32fMTF9ExFAT)「Wu,E】花/7;3弓I與程摩31導(dǎo)根目錄下的3001MGRSF5下WTWR優(yōu)先}(占用J扇區(qū))SYSLINUX1舟皈倡(FAT/FAT32^MTFS)hreeDOSirATW32)當前引]記錄:BOOTMCR引導(dǎo)程序安裝建置⑶備份PBR饞)恢復(fù)PBR俱)取消?GRUB4DOSm^X逾頁填入你找到申曹駕引導(dǎo)文件名【GRigsaaa@。4&:版本0。.4&版本|瞬|52消J但是網(wǎng)上流傳的激活工具很多,這樣設(shè)置不一定奏效。如果你這樣設(shè)置了反而不能啟動,可以用BOOTICE選擇你的硬盤,點分區(qū)引導(dǎo)記錄按鈕,選擇C盤,再選擇BOOTMGR引導(dǎo)程序,點安裝/配置,并設(shè)置引導(dǎo)文件名為BQQTMGR。成功啟動系統(tǒng)后,再使用激活工具重新激活(注意捆綁木馬成使用微軟的NT6MBR代碼時,只有活動分區(qū)的PBR代碼會被執(zhí)行。所以,引導(dǎo)文件當然可以不放在C盤......但必須放在活動分區(qū)里。操作完成后,重啟,按F2進入BIOS,設(shè)置SecureBoot為Disabled,再設(shè)置LaunchCSM為Enabled,按F10保存重啟,再看看是否可以正常啟動。如果你已經(jīng)看見Windows的一圈白點在旋轉(zhuǎn)/呼吸Logo在發(fā)光,但還是沒有啟動成功……可以再用U盤啟動,進入WinPE,試試下面的辦法。使用osletter7.cmd修正一下C盤盤符(修正HKLM\MountedDevices下的值),命令:osletter7.cmd/currentos:c/targetletter:c(osletter7.cmd文件的內(nèi)容放在后面)除此之外,錯誤的SystemBootDevice鍵值也可能卡住啟動??梢栽赪inPE下按WIN+R運行regedit,啟動注冊表編輯器。先選擇HKEY_LOCAL_MACHINE,然后選文件->加載配置單元,選擇C:\Windows\System32\config\SYSTEM,輸入一個名字,比如SYSTEM_C即可加載。然后定位到HKEY_LOCAL_MACHINE\SYSTEM_C\ControlSet001\Control,刪掉SystemBootDevice這個REG_SZ值即可。這里用的是ControlSet001,可能還有ControlSet002、ControlSet003可以看看HKEY_LOCAL_MACHINE\SYSTEM\Select\Default指向的是哪一個,再去定位、修改。比如Default的值是1,那么就應(yīng)該在ControlSet001下定位、修改。如果出現(xiàn)了藍屏,除了上面的方法,你還可以試試安全模式或最后一次正確配置。自帶的系統(tǒng)重置不能使用了?這可能是因為找回分區(qū)時隨機生成了一個新的磁盤GUID,或者是分區(qū)位置有變動、被刪除導(dǎo)致的。抱歉,我不能幫你找回這個功能,但是你可以去電腦制造商官網(wǎng)(比如華碩的/),打開服務(wù)與支持頁面,下載驅(qū)動程序,然后用微軟的安裝媒體準備工具來準備Windows安裝盤。這樣就可以在出現(xiàn)問題時自己搞定重裝系統(tǒng)了。WinRE可以用reagentc命令設(shè)置,你可以參考網(wǎng)上的資料折騰一下。但如果你玩轉(zhuǎn)了reagentc,即使沒有WinRE,你也可以獨立把系統(tǒng)恢復(fù)到可用狀態(tài)了吧......其實BCD文件可以用注冊表編輯器加載,然后找到某個Object,再找到device/osdevice對應(yīng)的Element值,0038偏移處就是原來的磁盤GUID。注意字節(jié)序問題,用gdisk可以把磁盤GUID修改回原來的值。這樣就不用重設(shè)BCD和注冊表里的盤符信息了。說不定自帶的系統(tǒng)重置功能也不會受影響了?Osletter7.cmd文件內(nèi)容如下,可以把下面的內(nèi)容(別把這行說明也復(fù)制進去了!)全部復(fù)制到記事本,文件-另存為,輸入文件名osletter7.cmd,選擇文件類型為”所有文件”,再點保存:@echooffREM===============================================================================REMREMScriptargumentsREM/currentos:<driveletter>REMSpecifythecurrentdriveletter(underWinPE)oftheOSpartitionREQUIREDREMREMNOTE:Thelogisprintedtoconsolebydefault.Towritelogtofile,pleaseREMredirecttheoutputtoalogfile.Forexample:REMosletter7.bat/targetletter:s/currentos:t>t:\osletter7.logREMREMsetlocalsetBadUsage=setCurrentOsDriveLetter=setTargetSystemDriveLetter=setNewOSDriveLetter=setTempOutFile=%TEMP%\osletter7.bat.temp1.outsetValidDriveLetters=CDEFGHIJKLMNOPQRSTUVWXYZif/I"%1"==""(Call:PrintUsageexit/b1)if/I"%1"=="/?"(Call:PrintUsageexit/b1)REMPrintlogfileheaderecho.echoScriptprocessingstartedforcommand:"%0%*".echoParsingarguments...REMparsecommandlinearguments:ParseArgumentLoopif/I"%1"==""(goto:ParseArgumentLoopEnd)if/I"%1"=="/?"(Call:PrintUsageexit/b1)Call:ParseArgument%1if"%BadUsage%"=="1"(goto:HandleBadUsage)shift/1goto:ParseArgumentLoop:ParseArgumentLoopEndREMargumentchecksCall:ValidateArgumentif"%BadUsage%"=="1"(goto:HandleBadUsage)ifnotexist%CurrentOsDriveLetter%:\Windows\System32\Config\SYSTEM(echoERROR-Drive"%CurrentOsDriveLetter%"isnotavalidOSdrive-OSimagenotfound.goto:HandleBadUsage)REMOutputcommandargumentstologfileechoechoExecutingwiththefollowingargumentsechoechoCurrentOSpartition:%CurrentOsDriveLetter%echoTargetsystempartitionletter:%TargetSystemDriveLetter%echoREMMainscriptprocessing---Call:FixRegistryif"%BadUsage%"=="1"(goto:HandleBadUsage)ifERRORLEVEL1(goto:Failure)REMREMEndofthemainfunction(incaseofsuccess)REMifexist%TempOutFile%del/q%TempOutFile%echoScriptcompletedsuccessfully.exit/b0REMREMExitthescriptincaseoffailure.REM:Failureifexist%TempOutFile%del/q%TempOutFile%echoScriptfailed!REMREMFunction-ParseanargumentREMOutput:setBadUsage=1ifparsingfailedREM:ParseArgumentsetArgumentName=setArgumentValue=for/F"delims=:tokens=1"%%iin("%1")dosetArgumentName=%%ifor/F"delims=:tokens=2"%%iin("%1")dosetArgumentValue=%%ifor/F"delims=:tokens=3"%%iin("%1")do(ifnot"%%1"==""(REMThisistheerrorcasethattherearemorethantwotokensintheREMargumentstring(e.g."currentsystem:s:abc")echoError-Invalidsyntax:%1setBadUsage=1exit/b1))if/I"%ArgumentName%"=="/Targetletter"(setTargetSystemDriveLetter=%ArgumentValue%)else(if/I"%ArgumentName%"=="/CurrentOS"(setCurrentOsDriveLetter=%ArgumentValue%)else(echoError-Invalidsyntax:%1setBadUsage=1exit/b1))exit/b0REMREMFunction-Checkargumentsforrequieredoptions.REMInput:REMOutput:setBadUsage=1ifvalidationfailedREM:ValidateArgumentif"%TargetSystemDriveLetter%"==""(echoERROR-No/targetLetteroptionspecifiedonthecommandline.setBadUsage=1)else(Call:IsValidDriveLetterTargetLetter%TargetSystemDriveLetter%TargetSystemDriveLetter)if"%CurrentOsDriveLetter%"==""(echoERROR-No/currentosoptionspecifiedonthecommandline.setBadUsage=1)else(Call:IsValidDriveLetterCurrentOS%CurrentOsDriveLetter%CurrentOsDriveLetter)exit/b0REMREMFunction-Displayusageforhelp.REMInput:REMOutput:REM:PrintUsageechoThisscriptcanbeusedtochangetheOSdriveletterswhenechodeployingaWIMimagebeforereboot.echo.echoosletter7[.cmd]/TargetLetter:A<DriveLetterA>/CurrentOS:A<DriveLetterA>echo.echo/TargetLetter:A<DriveLetterA>echoSpecifytheOSdriveletterunderthesystemechoecho.echo/CurrentOS:A<DriveLetterA>echoSpecifythecurrentdriveletter(underWinPE)oftheOSpartitionecho.echoExamples:echoosletter7/targetletter:s/currentos:techoExecutethescript.echo.echoosletter7/targetletter:s/currentos:tA>t:\dl.logechoExecutethescriptandredirectoutputtoalogfile.echo.exit/b0REMREMFunction-PrinthelpmessageincaseofbadusageREMInput:REMOutput:REM:HandleBadUsageecho.echoType"DriveLetter/?"forhelp.exit/b1REMREMFunction-Checkwhetheradriveletterfromacommandlineargumentisvalidornot.REMInput:%1-Nameofthecommandlineargument(e.g.CurrentSystem)REM%2-thedriveletter(e.g.C)REM%3-Nameoftheglobalvariabletoset(e.g.CurrentSystemDriveLetter)REMOutput:setBadUsage=1anderrorlevel=1iftheinputdriveletterisinvalidREM:IsValidDriveLetterfor%%iin(%ValidDriveLetters%)do(if/I"%%i"=="%2"(set%3=%%iexit/b0))echoERROR-Invaliddriveletter"%2"enteredforthecommandlineargument"%1"setBadUsage=1exit/b1REMREMFunction-Checkwhetheradriveletterisvalidornot.REMInput:%1-thedriveletterREMOutput:seterrorlevel=1ifthedriveletterisinvalidREM:IsValidDriveLetter2for%%iin(%ValidDriveLetters%)do(if/I"%%i"=="%1"(exit/b0))exit/b1REMREMFunction-FixdrivelettersinregistryREMInput:argumentsinglobalvariablesREMOutput:REMReturn:seterrorlevelto1incaseoffailureREM:FixRegistrysetSystemHiveLoaded=setFixRegistryErrorLevel=echoFixingdrivelettersinregistry...iferrorlevel1(goto:FixRegistryExitWithFailure)echoPreparingtofixregistryentries...Call:FindVolumeEntryByDriveLetter%CurrentOsDriveLetter%OSVolumeValueiferrorlevel1(goto:FixRegistryExitWithFailure)REM--Atthispoint,OSVolumeValueissomethinglike000000080014E70400000000.reg.exeloadHKU\TEMP%CurrentOsDriveLetter%:\Windows\System32\Config\SYSTEM>%TempOutFile%ifERRORLEVEL1(echoCommandfailed:reg.exeloadHKU\TEMP%CurrentOsDriveLetter%:\Windows\System32\Config\SYSTEMgoto:FixRegistryExitWithFailure)else(setSystemHiveLoaded=1)REM--createthekeyfirstsothatwecansuccessfullyREM--delete,incaseitdidnotexist.regaddHKU\TEMP\MountedDevices/f>%TempOutFile%ifERRORLEVEL1(echoCommandfailed:regaddHKU\TEMP\MountedDevices/fgoto:FixRegistryExitWithFailure)regdeleteHKU\TEMP\MountedDevices/f>%TempOutFile%ifERRORLEVEL1(echoCommandfailed:regdeleteHKU\TEMP\MountedDevices/fgoto:FixRegistryExitWithFailure)regaddHKU\TEMP\MountedDevices/f>%TempOutFile%ifERRORLEVEL1(echoCommandfailed:regaddHKU\TEMP\MountedDevices/fgoto:FixRegistryExitWithFailure)regaddHKU\TEMP\MountedDevices/v\DosDevices\%NewOSDriveLetter%:/tREG_BINARY/d%OSVolumeValue%/f>%TempOutFile%ifERRORLEVEL1(echoCommandfailed:regaddHKU\TEMP\MountedDevices/v\DosDevices\%NewOSDriveLetter%:/tREG_BINARY/d%OSVolumeValue%/fechoERROR-FailedtowritetoSystemregistryhivegoto:FixRegistryExitWithFailure)else(echoSuccessfullywroteOSvolumedevicewiththenewdriveletter.)reg.exeunloadHKU\TEMP>%TempOutFile%if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新股上市第一天的交易制度
- 教學(xué)月計劃月總結(jié)制度
- 手術(shù)室相關(guān)制度
- 開發(fā)項目獎勵金制度
- 建立重要急需教學(xué)專題立項招標制度
- 工程結(jié)算審核風險控制制度
- 工廠安全生產(chǎn)風險分級管控制度
- 山西建投質(zhì)量驗收制度
- 湖南中醫(yī)藥大學(xué)《專業(yè)論文寫作與專業(yè)英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西信息應(yīng)用職業(yè)技術(shù)學(xué)院《診斷學(xué)2醫(yī)技》2023-2024學(xué)年第二學(xué)期期末試卷
- 《建筑施工常見問題》課件
- 職高計算機單招操作題庫單選題100道及答案
- 通信工程部的職責與技術(shù)要求
- 簡愛插圖本(英)夏洛蒂·勃朗特著宋兆霖譯
- 焊接專業(yè)人才培養(yǎng)方案
- 第二屆全國技能大賽江蘇省選拔賽焊接項目評分表
- 糖尿病護士年終總結(jié)
- 第20課 《美麗的小興安嶺》 三年級語文上冊同步課件(統(tǒng)編版)
- 糖尿病基礎(chǔ)知識培訓(xùn)2
- 手工藝品加工合同
- 研學(xué)旅行概論第六章
評論
0/150
提交評論