none
dismのcleanup-image restorehealthをインストールメディアから実行しようとしていますが、エディションを知る方法を教えてください。 RRS feed

  • 質問

  • 毎度お世話になります。

    色々とネットで調べながら頼まれた起動しなくなったwindowsPCを現状復旧しようと頑張っているのですが、インストールされていたwindowsがHomeなのかProなのかがわからないとたとえdismで書き戻しが成功してもエディションを間違えるとというところで、書き戻しができないでいます。

    書き戻しというのが、cleanup-image restorehealthに対して適切なのかわかりませんが、動かなくなるとかライセンスの問題が発生することは避けなければなりません。

    自動修復でなんともならないPCをWindows 8.1/8/7がプレインストールされていたであろうwin10の稼働していたPCに、工場出荷状態に戻すこともできず、ライセンスを維持するためにクリーンインストールもやめようと思っていますが、多くのしっかりとした解説ページでは同じエディションのインストールメディアを用意するように警告していますが、

    1.私が考えているような事態にはならないのか

    2.もしなるとしたらHomeやProやEducationやEnterprizeはそろえなければならないと思うのですが

    実際のところどうなのでしょうか?

    1.なら気にせずinstall.wimから引っ張り出したProを使いますが、もし2.ならどうやってオフラインで調べればいいのか教えてください。

    何卒よろしくお願いします。

    2019年12月1日 18:52

すべての返信

  • oooohです

    Windows 10 のダウンロードによると

    この PC を以前 Windows 10 にアップグレードしたことがあり、再インストールしようとしている場合は、プロダクト キーを入力する必要はありません。Windows 10 は、デジタル ライセンスを使用して、後で自動的にライセンス認証されます。

    と記載があります。

    ちなみにオフライン状態のOSのエディションを確認するには、

    OSインストールメディア等で外部ブートを行い、

    「C:\Windows\System32\config\SOFTWARE」をレジストリエディタからハイブし、

    「\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName」の値を参照すれば、

    わかると思います。

    2019年12月2日 6:47
  • Dismの書き戻しと言うのが良く分かりませんが、DISM /Cleanup-image /Restorehealth を実行する際に /Source: で指定するインストールメディアのエディションを気にしているのであれば、以下でダウンロードできるメディアについては Home Professional を兼ねている理解なので、こちらを使えば良いのではないかと思われます。

    それでも不安なら、ディスクごとバックアップを取得した上で作業するとか、色々と対策の立てようはある気がします。

     

    https://www.microsoft.com/ja-jp/software-download/windows10


    • 編集済み LapivyMVP 2019年12月2日 14:52
    2019年12月2日 14:51
  • なるほどですね。

    どうせならdismコマンドだけで済ませられる方法はないでしょうか?

    それと、レジストリエディタからハイブというのが勉強不足でよくわかりません。

    dismの /get-currentedition

    オプションをオフラインの状態で実行するのはもとの書き戻すべきエディションを判断できますか?

    より確実なのはレジストリエディタですか?

    2019年12月3日 21:15
  • ソースに指定するものは、全てのエディションを用意しましたが、どのエディションを適応するのかを調べられずに、実施できていません。

    dism /get-currentedition

    オプションがあるようですが、オフラインのwindowsパーティションにどうやって実行すればいいのかがわかりません。

    現在稼働中のPCでは、

    dism /online /get-currentedition

    で、インストールしたエディションを得ることはできていますが、インストールメディアからどうやって実行するのかが、わからずにいます。。引き続きご教授ください。


    2019年12月3日 21:23
  • oooohです。

    ハイブの読み込みについては下記でも参照してください。
    レジストリにハイブを読み込むには

    オフラインシステムのレジストリーを編集する

    Dismをオフラインイメージ対して実施する場合は

    通常、/onlineのところを例えば/image:E:\windows等で指定します。

    2019年12月4日 7:26
  • 重要なヒントをありがとうございます。

    オフラインのOSのエディションを得るには、diskparttコマンドでボリューム情報を得て

    dism /image:[ドライブレター]:\windows\offline /get-currentedition

    ということですね?

    これで一気に作業が進みそうです。レジストリについても読んでみます。

    2019年12月5日 21:58
  • レジストリに関するリンクも読ませていただきました。

    先日もいただいたレジストリーキーの主キーがなくてもしくは見逃していて、product nameを見つけることができませんでした。

    今回の場合はより確実にということを意識した場合には、

    dismとregeditと、どんな優先順位を考えるのが望ましいですか?

    2019年12月5日 22:10
  • oooohです。

    自分で提案しておいてなんですが・・・

    /Imageに指定できるのはwimだけっぽいですね。

    なので「既に展開されているディレクトリ」に対しては/online (つまりOS起動状態から)でしか

    /restorehealthを実行すること自体が不可能なんでは。

    もしやるとしたら

    Dism /Capture-Image で既に展開されているディレクトリをwimファイルで取得して、

    そのwimを/Imageで指定する形でしょうか。

    これはめんどくさい・・・

    私なら破損したOSのバックアップ取って普通にクリーンインストールしますね・・・。

    ※既存のOSバージョンはレジストリで見ます。

     (上記と同様の理由でレジストリからしか見れないと思われます)

    2019年12月6日 7:44
  • oooohです。

    ハイブの仕方ですが、

    インストールメディアで外部ブート 
    >次へ 
    >コンピューターを修復する
    >コマンド プロンプト 
    >regedit
    >HKEY_LOCAL_MACHINEをクリック
    >ファイル 
    >ハイブの読み込み
    >C:\windows\system32\config\SOFTWAREを指定しキー名を1にしてOK
    >HKEY_LOCAL_MACHINE\1\Microsoft\Windows NT\CurrentVersionを開く
    >ProductNameを確認

    で見れませんか。


    2019年12月6日 7:55
  • ハイブを使ったバッチを組んでみました。

    Choice.exe を system32 フォルダから調達して

    WindowsPE 上で実行してみて下さい。

    インストールされたOSをオフラインで調査.cmd
    
    @echo off
    SetLocal EnableDelayedExpansion
    
    CLS
    echo;★ ★ ★ インストールされたOSをオフラインで調査 ★ ★ ★
    echo;
    echo; Windows が あるドライブを探しています・・・
    echo;
    
                     Set    "Select_OS-Drive= "
                     Set       "Select_Drive= "
    for                   %%D in ( C D E F G H I J K L M N O P Q Q S T U V W   Y Z ) do (
       if      exist      %%D:\ (
           if      exist "%%D:\Windows\system32\cmd.exe" (
                  echo;【 %%D 】ドライブに cmd.exe が在ります。多分、これが OS の ドライブかも。
               Call  Set     Select_OS-Drive=%%Select_OS-Drive%%%%%%D
           )
           Call      Set        Select_Drive=%%Select_Drive%%%%%%D
       )
    )
    
    echo;
    echo;  [C,D,E]? のような選択肢が表示されたら
    echo;
    echo;  C を選択する場合、「 C 」キーだけ押して下さい。
    echo;
    echo; ※ 処理をキャンセルする場合は、ここで [Ctrl] + [C] を 押して
    echo;    「バッチ ジョブを終了しますか」 が 表示されたら
    echo;    [y] 、 [Enter] の 順番にキーを押すとキャンセルします。
    echo;
    
    choice               /c %Select_OS-Drive% /m " OS のドライブを指定して下さい "
    Call  Set OSのドライブ=%%Select_OS-Drive:~!errorlevel!,1%%
    
    echo;
    
    >nul (
                                                    REG   LOAD "HKLM\PeHive" "%OSのドライブ%:\windows\system32\config\SOFTWARE"
    for /f "skip=2 tokens=2 delims=REG_SZ" %%2 in ('REG QUERY  "HKLM\PeHive\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do set ProductName=%%2
    for /f "skip=2 tokens=3 delims=REG_SZ" %%4 in ('REG QUERY  "HKLM\PeHive\Microsoft\Windows NT\CurrentVersion" /v "ReleaseId"')   do set   ReleaseId=%%4
                                                    REG UNLOAD "HKLM\PeHive"
    )
    
    echo; 調査対象のドライブにあるOSは
    echo;
    echo;%ProductName%%ReleaseId%
    echo;
    
    choice /c SRT /m "調査終了。後どうする?  電源断 → S , 再起動 → R , 処理終了 → T "
    
    if      !ERRORLEVEL! EQU 1                Wpeutil   Shutdown
    if      !ERRORLEVEL! EQU 2                              Wpeutil   Reboot
    

    2019年12月11日 9:37