歴史的背景。
私たちが知っているように、レジストリは最初にWin95に登場し、すぐに紛失/損なう価値がないことが明らかになりました。 幸いなことに、OCのWin9xファミリでは、レジストリはシステムの起動時に自動的にバックアップされました。 同時に、2(Win95)から5(Win98 / ME)までのロールバックレベルが開催されました。 手動の降圧も問題ではありませんでした。 コンピュータをDOSモードで再起動し、いくつかのファイルを安全な場所にコピーするだけで十分でした。 Microsoftは、Windowsからレジストリを直接ダウンロードするERUユーティリティも提供しました。
Win2000とその派生物(WinXP / Vistal / 7)の出現により、状況は根本的に変わりました。 NTベースのシステムでは、レジストリファイル(C:\ Windows \ System32 \ Configおよび%userprofile%\ ntuser.dat)は常に開いて使用されます。 その結果、不快なバグが現れ始めましたが、そのいくつかは今日まで発見されています。 それらのほとんどは、1つのシナリオの結果です。一部のプログラムはレジストリのキーを開き、閉じるのを忘れます。 その結果、多くの興味深い副作用が発生する可能性があります。
*まず、キーがHKCUで閉じられていない場合、ログオフ\コンピューターの再起動/シャットダウンに非常に長い時間がかかる場合があります-WindowsはすべてのプログラムがユーザーをログアウトするためにHKCUを解放するまで辛抱強く待ちます(バグのあるプログラムがシステムサービスとして登録されている場合は発生しません) 。
*次に、一部の変更はレジストリに「ダンプ」されず、その結果、再起動後に保存されませんでした。 これは、たとえば、オフィスアプリケーションを起動するたびに「Windowsが<プログラム>を構成する間、しばらくお待ちください」というメッセージを頻繁に見る必要があった移動プロファイルを持つ企業ユーザーにとって特に面倒でした。 その結果、Vista / W7にはレジストリトランザクションファイル(regtrans-ms)があり、レジストリファイル自体よりも多くのスペースを占有する場合があります。
*最悪の場合、再起動中にレジストリの整合性が侵害され、高速道路全体(ほとんどの場合再びHKCU)を失う可能性がありました。 ちなみに、これは今日まで続きます。GoogleChromeを更新するサービスについてかなり多くのノイズが発生します。GoogleChromeは多くの記述子を開くのが好きで、それらのいくつかを閉じるのを忘れています。
問題は非常に深刻だったため、Microsoftは「 User Profile Hive Cleanup Service 」と呼ばれる特別なサービスをリリースしました。これは、再起動時にすべてのユーザーを強制的にレジストリから切断します(HKCU / ntuser.datのみ)。 強くお勧めします。
これはすべて、WinNTベースのシステムにとってレジストリの整合性がいかに重要かを示しています。 しかし
- NT / 2000では、自動レジストリブートはありません。
- WinXPでは、レジストリのバックアップは一般的なシステムバックアップ中にのみ実行されます([システム状態のバックアップ]を選択した場合)。 この場合、OSファイル(〜500MB)はユーザーが指定したディレクトリに配置され、レジストリのバックアップはC:\ Windows \ Repairにあり、そこからハンドルでコピーする必要があります(レジストリをバックアップする必要がある場合は500Mのジャンクを削除します)。 残念ながら、Windows GUIではNULのサブディレクトリを選択できません:)
- Vista / W7では、降圧はすべてVHDで行われます。 判明したように、システムの復元は十分な信頼性がなく、\ Windows \ Repairは見えません。 ** UPD **しかし、それに似たものがあります\ Windows \ System32 \ Config \ RegBack、タスクスケジューラによって10日ごとに更新されます。 コメントから親切な人々に感謝します 。 確かに、システムレジストリのみがあります。
レジストリを取得する他の簡単な方法はありませんでした。私はそれを考え出す必要がありました。 そこで、ERUNT(NTのERU)がありました。
ERUNT。
ERUNTはLars Hedererという名前のドイツの専門家によって開発され、 実際には、WinNTライクなOS(NT / 2K / 2K3 / XP / Vistal / 7) のレジストリを「実際に」指定されたディレクトリにバックアップします。 、OSの動作中はいつでも)。
readmeファイルでアプリケーションの詳細を読むことができますが、私がどのように個人的に気に入ったか、どのように使用するかを説明します。
- バックアップとリカバリ用のGUIとCLIがあります。 テストにGUIを使用し、すべてをコマンドラインパラメーターにロールして、タスクを作成すると非常に便利です(以下について)。 同様に、回復の場合:完全な回復の場合、単純なバッチファイルを作成できます。特別な状況では、GUIを実行して必要なものを選択できます。
- 高速道路(システムとユーザー)を選択できます-システム、ユーザープロファイル、他のユーザーのプロファイルをすべてまとめてバカピットできます。 最初は、「週に1回すべてバカプ、毎日bakapitプロファイル」という計画がありましたが、プログラムは非常に高速に動作し、bakapyは非常に小さなスペースを占有するので、今では毎日bakapuします。
- 特別なブートローダーまたはWindows回復コンソールからレジストリを復元します。 通常、コンソールで十分です(実際には、ファイルの通常の書き換えが発生するため)。
- インストーラーを使用してインストールされますが、ディレクトリ外にファイルを配置しないようですので、ポータブルでの使用に適しています。 .INIファイルは、デフォルト値を書き込むことができるディレクトリに保存されます。これにより、毎回指定されるコマンドラインキーの数を減らすことができます。 いずれにしても、回復ユーティリティは完全に独立して動作します。
- たくさんの興味深いオプションがバカパを自動化しました。 私自身のために、私は次のことをしました:
- ディレクトリD:\ Install \ __ Backups \ RegBackup-ERUNT \サブディレクトリは、必要な形式の日時で作成されます(約RegBackup-ERUNT \ 2012-04-19-17.00.04 \)。
- そのような各サブディレクトリには、実際には、レジストリの高さと回復ユーティリティがあります(緊張しないように)。
- ドルの履歴は30日間保存されます(最後の5などの数字、または時間で構成できます)。 古いものは自動的に削除されます(無効)。
- すでに今日bakapを実行している場合、2回目(3回目など)はスキップされます。 (タスクスケジューラには「タスクの起動時間に間に合わない場合-できるだけ早く実行する」オプションがあり、この方法で1日に2つのバックアップを起動できるため、便利です)。
- サイレントモードなどの標準オプション
- 最も感銘を受けたのは、トーガでほとんどのコマンドラインキーを削除したことです。 著者によって設定されたデフォルト値は、まさに私が必要とすることをします! :)残りはINIファイルで設定され、その結果、巨大なコマンドラインはAUTOBACK.EXE <バックアップのディレクトリ名> \#日付#-#時刻#に短縮されました。
結論として、タスクスケジューラにERUNT.INIと.XMLを添付しています。
ERUNT.INI(ERUNTがあるディレクトリへ):
[ERUNT] DefaultDestinationFolder=D:\Install\__Backups DateFormat=yyyy/mm/dd DateSeparator=- TimeFormat=hh:mm:ss TimeSeparator=.
ERUNT.XML(タスクスケジューラにインポート、ユーザー名とパスを修正):
<?xml version="1.0" encoding="UTF-16"?> <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2012-04-01T21:27:40.026817</Date> <Author>APCNB\apc</Author> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2012-04-01T17:00:00</StartBoundary> <ExecutionTimeLimit>PT1H</ExecutionTimeLimit> <Enabled>true</Enabled> <ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>APCNB\apc</UserId> <LogonType>S4U</LogonType> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>true</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT1H</ExecutionTimeLimit> <Priority>7</Priority> <RestartOnFailure> <Interval>PT1H</Interval> <Count>3</Count> </RestartOnFailure> </Settings> <Actions Context="Author"> <Exec> <Command>C:\bin\ERUNT\AUTOBACK.EXE</Command> <Arguments>D:\Install\__Backups\RegBackup-ERUNT\#Date#-#Time#</Arguments> <WorkingDirectory>C:\bin\ERUNT\</WorkingDirectory> </Exec> </Actions> </Task>
一般に、ユーティリティの作成者は2001年からこの問題に取り組んでおり、彼のビジネスを熟知しています。使用することを強くお勧めします。