treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

(2/2)Windows10のローカルポリシーでエラー、対処してみよう

Windows10のローカルポリシーエディタで表示されるエラーを実際に対処してみたのでご報告します。

世はエイプリルフールかもしれませんが本記事はエイプリルフールは関係しておりませんのでご安心ください。

昨日の記事<(1/2)Windows10のローカルポリシーでエラー、調査してみよう - treedown’s Report>の続きです。もし他のページから飛んできた場合には昨日の記事からお読みになることをお勧めします。

昨日までで、
gpedit.mscコマンドでローカルグループポリシーエディタを開くと
名前空間 'Microsoft.Policies.Sensors.WindowsLocationProvider' は、既にストア内の別のファイルのターゲット名前空間として定義されています。
ファイル C:\WINDOWS\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx、行 5、列 110」
のエラーが表示される件の調査とサポートサイトの内容を読み解きました。

今日は実際に対処してみます。

対象のファイルの比較

それではちょっとファイルの内容を比較してみることにします。
図3:LocationProviderADM.admxとMicrosoft-Windows-Geolocation-WLPAdm.admx比較

f:id:treedown:20160330021613p:plain中身は同一、ということでイイみたいです。つまりどっちか要らないのにUpdateかなにかの時にMSの処理が落ちていたせいみたいでこのメッセージが出るみたいですね。

それでは対処します

中身が同一なのでどっちを消すかというとシナリオ2に記載されている「 Microsoft-Windows-Geolocation-WLPAdm.admx」(と.admlの二つ)をローカルストアから削除すればいいようです。対象ファイルの中身が違っていれば、シナリオ1が該当する、ということですね。
事前に「takeown」コマンドでアクセス権を設定しておきます。
※コマンド実行例

f:id:treedown:20160330022122p:plain
----------------------------------------------
C:\WINDOWS\system32>takeown /F "C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx" /A

成功: ファイル (またはフォルダー): "C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx" は現在 Administrators グループによって所有されています。

C:\WINDOWS\system32>takeown /F "C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml" /A

成功: ファイル (またはフォルダー): "C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml" は現在 Administrators グループによって所有されています。
----------------------------------------------
このコマンドを実行したらば、ファイルの所有者がビルトイン「Administrator」アカウントになっています。
コマンドが成功していないと以下のエラーメッセージが出ます。
図4:権限不足でエラーの画面

f:id:treedown:20160330022143p:plain
このメッセージの「TrustedInstaller」が前の所有者アカウント名です。この所有者アカウントだとファイルをアレコレいじくれません。
takeownコマンドで所有者変更を実行したのちアクセス権変更が可能な状態になっているはずです。Administratorアカウントにフルコントロール許可を付与しましょう。

コマンド実行例―2

f:id:treedown:20160330022439p:plain
----------------------------------------------
C:\WINDOWS\system32>cacls "C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx" /G Administrator:F
よろしいですか (Y/N)?Y
処理ファイル: C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx

C:\WINDOWS\system32>cacls "C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml" /G Administrator:F
よろしいですか (Y/N)?Y
処理ファイル: C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml
----------------------------------------------
caclsコマンドでちょろっとフルコントロールをAdministratorアカウントに付与しています。Administrator以外のユーザで操作する場合コマンド中のAdministratorの部分をお好みのユーザアカウントに置き換えます。

コマンドを実行出来たらば、ファイルを削除可能になっています。

  • エクスプローラでファイルを移動するもよし
  • そのままDelキー押下でファイル削除してしまうもよし
  • サポートサイトに記載のあるように.old拡張子で無効化してしまうもよし

お好みで処理しちゃいましょう。

バッチにしておきますか。

適当なバッチファイルに以下をコピペして実行するように仕込んでおくと、エラーが解消できる、という感じです。実行条件である「コマンドプロンプト(管理者)で実行」という点は変わりません。
ただし、バッチファイル内での処理は対象ファイルを削除してしまうようになっていますので削除せず移動したい場合には多少手を入れる必要があります。また本バッチについて何かを保証するものではありませんので必要に応じて適宜手を加えてください。

----------------------------------------------
@echo off
takeown /F "C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx" /A
takeown /F "C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml" /A
cacls "C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx" /G Administrator:F
cacls "C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml" /G Administrator:F
cacls "C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx" /G %USERNAME%:F
cacls "C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml" /G %USERNAME%:F
rem ファイルを削除します。削除しない場合には以下2行は実行させないようにしてください。
del "C:\Windows\PolicyDefinitions\Microsoft-Windows-Geolocation-WLPAdm.admx"
del "C:\Windows\PolicyDefinitions\ja-JP\Microsoft-Windows-Geolocation-WLPAdm.adml"
----------------------------------------------