質問者
既定のプログラムの設定について

質問
-
初めて質問させていただきます。
社内用にWindows 10 の環境を構築しているのですが、既定のプログラムの設定で詰まっており、皆様のお知恵を拝借したく。
宜しくお願い致します。
【目的】
既定のプログラムの設定を変更したい。
新規にユーザーを作成しても、既定のプログラムの設定を反映させたい。
【対象】
htm,html → IE11
pdf → adobe reader
【環境】
Windows10 Pro (1709)
ドメイン参加なし(検証中)
【調べたこと】
以前別コミュニティで、「Dism.exeを用いるとその設定が出来る」と拝見したため検証してみましたが、うまく反映されませんでした。
検証手順は以下の通りです。
1.管理者ユーザーで既定のプログラムを変更
2.Dism /online /Export-DefaultAppAssociations でxmlファイルを作成。
3.Dism /online /Import-DefaultAppAssociationsで作成したxmlファイルを読み込む。
4.コピープロファイルを実行。
5.新規ユーザーを作成。
6.新規ユーザーでログインしたが、反映されず。
ドメインポリシーとの組み合わせは未検証の状態です。
ドメイン未参加の状態でも検証出来る方法があればと思い、質問させていただきます。
宜しくお願い致します。
すべての返信
-
-
既定のプログラムの設定ですが、残念ながら CopyProfile を行っても sysprep により設定が初期化されてしまいます。
カスタムイメージ内で既定のプログラム設定を反映させたいのであれば、以下の SetupComplete.cmd を用いる手順を試してみて下さい。
① Dism /online /Export-DefaultAppAssociations で作成した XML ファイルをローカル (%WinDir%\Setup\Scripts 等) に作成。
② Dism /online /Import-DefaultAppAssociations で、ローカルに保存した XML を読み込ませるバッチを作成し、%WinDir%\Setup\Scripts\SetupComplete.cmd となる様に保存する。(インポート時の XML 指定は絶対パスにして下さい)
③ sysprep を行う。
④ 新規ユーザープロファイルを作成し動作を確認する。
【参考】
Sysprep 中に任意のコマンドを実行する方法について
https://blogs.technet.microsoft.com/askcorejp/2010/05/27/sysprep/
-
Lapivy様
ご返信ありがとうございます。
早速検証を行いました。が、反映されませんでした。
環境によるものなのか、私のやり方に誤りがあるのかを確認させていただきたく。
検証内容(管理者ユーザーで実行)
①既定のプログラムを変更
②Dism /online /Export-DefaultAppAssociations:%Windir%\setup\Script\test.xml を実行
③バッチ作成
ファイル名:SetupComplete.cmd
ファイルのパス:%WinDir%\Setup\Scripts\SetupComplete.cmd
ファイルの中身:Dism /online /Import-DefaultAppAssociations:%Windir%\setup\Script\test.xml
④sysprep実行
⑤初回のユーザーを作成
⑥新規ユーザーを作成し、ログイン
上記手順で実行しましたが、既定のプログラムの変更が反映されませんでした。
何か間違い等ありましたら、ご指摘願います。
併せて、情報等ありましたら、ご教示ください。
宜しくお願い致します。
-
「ファイルの中身」で指定している XML のパスを、環境変数を用いずに以下の様に指定してみて下さい。
C:\WINDOWS\setup\Script\test.xml
それと細かいのですが、パスに Script と Scripts が混在している様に記載されていますが、この辺は問題無いでしょうか?
この通りにファイルを保存・指定しているのであれば動作に問題は無いとは思いますが・・・
可能であれば、XML や SetupComplete.cmd を配置した上で、sysprep する前に手動でSetupComplete.cmd を実行して正常に既定のプログラムがインポートされるか動作を確認してみて下さい。
-
Lapivy様
ご返信ありがとうございます。
ご連絡が遅くなってしまい、申し訳ございません。
まず、前回の回答を致します。
パスに関しては、環境変数でも通常のパスでも問題ありませんでした。
パスの混在については、コピーミスです。申し訳ありません。
検証の結果として、社内運用に因る問題ということが分かりました。
原因は4のコピープロファイルにありました。
社内の運用上、コピープロファイルを行う際、C:\Users\Defaultにコピーし、標準化を図っていますが、そこが原因のようです。
プロファイルコピーを行わない場合は、既定のプログラムの設定が反映されますが、行った場合メッセージが表示され、全ユーザーで既定のプログラムがリセットされてしまいました。(新規ユーザー、既存ユーザーともにです)
プロファイルコピーをしても、既定のプログラムがリセットされないようにできるものでしょうか。
- 編集済み andre-ace 2018年3月20日 11:45
-
「C:\Users\Defaultにコピーし」とありますが、sysprep 時に応答ファイルを用いて CopyProfile を行っていると言う理解で良いでしょうか?
それとも別の方法で C:\Users\Default にプロファイルをコピーしているのでしょうか?
CopyProfile による既定のユーザー プロファイルのカスタマイズ
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898521?f=255&MSPPError=-2147217396
応答ファイルによる CopyProfile なのであれば、案内した方法での既定のプログラムの設定は、Windows 10 v1607 の環境では実績の有る方法なのですが、それ以降の Windows 10 では試した事が無いので、もしかすると Windows 10 v1709 では正常に動作しないのかもしれません。
また、今更ですし話を覆すようで申し訳無いのですが、Windows 10 では頻繁にアップグレードが行われる事から、Microsoft は Windows 10 における CopyProfile を推奨していないと記憶していますので、CopyProfile の利用自体も検討の必要が有るかもしれません。
ただ、やはり CopyProfile は利用するとの事であれば、グループポリシーによる既定のプログラムの設定を検討された方が良いかもしれません。
-
-
なるほど、まず CopyProfile は sysprep 時に応答ファイルを用いて行うのが Microsoft がサポートしている方法であり一般的な方法です。
Customize the Default User Profile by Using CopyProfile
それ以外の方法 (今回で言う copyprofile.exe) についてはサポートされませんし動作保証外である事をご理解下さい。
copyprofile.exe の作成元も動作仕様も不明 (少なくとも私は知りません) であり一般的な方法とは言えない時点で、他人からの適切なアドバイスは期待できないと考えた方が良いでしょう。(私もその様な方法での CopyProfile は経験が無いので、これ以上のアドバイスは難しいです)
上記の通りですので、これを機にサポートされる CopyProfile 方法に変更される事をお奨めします。
少なくとも、Microsoft サポートする sysprep 時に応答ファイルで CopyProfile する方法と、私が案内した既定のプログラムの設定を Setupcomplete.cmd でインポートする方法であれば、Windows 10 v1607 の環境では動作した実績が有りますので、Windows 10 v1709 の環境でも期待する動作となる可能性は高いと考えます。
-
Lapivy様
ご返信ありがとうございます。
おっしゃる通りで、現在はサポート外の方法で運用しているため、ピンポイントの回答のしようがないのは理解しております。
現在は先述の方法で運用しており、可能であれば現在の運用を行いたいと考えております。(折角のアドバイスに背くようで申し訳ありません)
理由として、社内PCのメンテナンス時やトラブル対応時に、copyprofileを行うことがあるためです。
Administratorで設定後copyprofileを行い、Defaultに上書きすることでPCを使う全ユーザーに対してそれを反映させております。
sysprepでのcopyprofileでは、回数の制限等により気軽にできるものではないため、運用に乗せるのが難しいというのが現在の考えです。
少し視点は逸れるのですが、バッチやレジストリの変更で対応する方法はございませんでしょうか。
以前調べた限りでは、ユーザー毎に既定のプログラムを設定するレジストリが生成され、レジストリ自体が編集できない。また、中身もハッシュ値を使用しているため、変更が難しい(できない)と記憶しています。
別の方法でもよいので、何かご教示いただけませんでしょうか。
-
CopyProfile と連動する形で既定のプログラムを設定するのは難しいかと思います。
ただ単に全てのユーザーに既定のプログラムの設定を反映させたいのであれば、すべてのユーザーのスタートアップで、既定のプログラムをインポートするスクリプトやバッチを実行するのはどうでしょうか?
テストした訳では無いので、うまく動作するかは分かりませんが・・・
以下が、すべてのユーザーのスタートアップのフォルダです。
バッチは Setupcomplete.cmd で行った内容を流用できるかと思いますが、ユーザーログオン時に毎回実行されてしまうので、その点が問題かとは思いますが・・・
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
-
OS自体の不具合かも知れません。
The current user associations could not be exported to file Error 0x80004002
https://social.technet.microsoft.com/Forums/windowsserver/en-US/5161bd23-733e-4e2f-a500-d652fc23b81d/the-current-user-associations-could-not-be-exported-to-file-error-0x80004002?forum=win10itprosetup
統合ディスクを作って試してみました。
KB4051963 (OS ビルド 16299.98)
○:既定のプログラムを変更
○:Dism /Export-DefaultAppAssociations
KB4088776 (OS ビルド 16299.309)
×:既定のプログラムを変更
×:Dism /Export-DefaultAppAssociations
16299.98 → 16299.309 にアップデート後にダメになりますし
アップデートの不具合かと思って、最初から 16299.309 でやってもダメでした。
対策としては、アップデート前に既定のプログラムを変更を行うか
アップデート後にアンインストールしてから既定のプログラムを変更を行い
再度、アップデートするくらいですかね。
---------------------------------------------------------------------------------------
追記です。
情報が出ました。
ここには、Dism しか書かれていませんが
「既定のプログラムを変更」による関連付けの変更も効かないです。
Windows 10 Version 1709 にて Dism /Online /Export-DefaultAppAssociations を実行した場合に 0x80004002 が出力される。
https://blogs.technet.microsoft.com/askcorejp/2018/03/29/exportdefaultappassoc/
- 編集済み 七辻屋 2018年3月30日 3:29 追加情報出ました