アクセス許可・所有者の変更方法
一、
Windows 7などでは、あるファイルに対し変更や削除を行おうとすると、「この操作を実行するアクセス許可が必要です。」、「このファイルを変更するには、TrustedInstallerからアクセス許可を得る必要があります。」という警告が現れ、アクセス拒否されることが多々ある。この場合、右クリックの「プロパティ」から「セキュリティ」を選択し、「編集」をクリックしてもアクセス許可を変更することはできない。これを可能にするには、所有権をTrustedInstallerから現在のユーザに移す必要がある。その方法は二通りあるようである。
○ その一つは、コマンドプロンプトを使う方法である。
1.コマンドプロンプトを右クリックし、「管理者として実行」から起動する。
2.[takeown /F]でファイルやフォルダの所有者を現在のユーザに変更する。
○ もう一つ、コマンドプロンプトに不慣れな方は、右クリックから行う方法がある。
1.フォルダやファイルを右クリックし、「プロパティ」⇒「セキュリティ」⇒「詳細設定」とクリックする。
2.「セキュリティの詳細設定」のウィンドウ内の「所有者」タブをクリックし、「編集」をクリック。
3.「所有者の変更」欄内の現在のユーザ名を選択し(図-1)、「OK」をクリックすると、図-2のような「このオブジェクトの所有権を取得した場合、このオブジェクトのプロパティを閉じてから再度開くと、アクセス許可の表示または変更を実行できます。」というメッセージが現れるので、「OK」をクリック。
4.さらに、「OK」でプロパティを閉じる。
図-1

図-2

上のいずれかの方法で所有者をTrustedInstallerから自己に変更すれば、アクセス許可を変更することができる。アクセス許可の変更についても、プロパティの編集とコマンドプロンプトの二通りの方法がある。
○ プロパティから行う方法
1.「プロパティ」⇒「セキュリティ」⇒「編集」とクリック。
2.「グループ名またはユーザー名」欄内の「Users」を選択し(図-3-①)、下部の「Usersのアクセス許可」欄内
の「変更」にチェックを入れる(図-3-②)。
3.「OK」をクリックしていき、プロパティを閉じる。
○ 通常は上の方法で問題ないが、複数のファイルのアクセス許可を変更する場合には、icaclsコマンドが便利である。
1.コマンドプロンプトを起動する。
2.例えば、あるフォルダ内のすべてのファイルについて、現在のユーザーのアクセス許可に「変更」を追加したいときは、
[icacls C:\Xxxxx\Xxxxxx\* /grant users:M]と、
アクセス許可をフルアクセスにしたいときは、
[icacls C:\Xxxxx\Xxxxxx\* /grant users:F]と、
また、あるフォルダ内のファイルだけでなく、そのサブフォルダ内のファイルすべてに対しても、アクセス許可に「変更」を追加したいときは、
[icacls C:\Xxxxx\Xxxxxx /grant users:M /T]と、
入力して、Enterを押下。
3.「○○個のファイルが正常に処理されました。0個のファイルを処理できませんでした」として、「処理ファイル」が列挙されるので、確認し、[exit]でコマンドプロンプトを終了。
図-3

以上で、ファイルの上書きや削除が可能になる。
因みに、わたくしの場合、UEFIに関する知識の全くないまま、UEFIに準拠したIntel X79のマザーボードにWindows 7 64bitをインストールしようとして不具合が生じ、なぜかOSを入れたSSDとは別のHDDにBoot Manager(Bootmgr)関連のファイルがインストールされてしまい、これらのファイルを削除するためにこの方法を利用した。このHDDには1TB近いデータが入っており、これを一旦他に移して、パーティションを作成し直して、それを書き戻すことも考えたが、それには数時間かかってしまうので、面倒ではあったが、この方法で削除するしかなかった。
二、
なお、削除の場合は問題ないが、ファイルに変更を加えた場合、ファイルの種類によってはセキュリティ上、元の状態に戻しておいた方が望ましいことも多い。その方法は以下の通りである(参照:msdn 'SYSK 277: How-To Bring Back the TrustedInstaller')。
1.まず、上のプロパティの操作で「Usersのアクセス許可」欄のチェックを入れた項目のチェックを外し、元に戻す。
また、icaclsコマンドで元に戻すには、元の許可が例えば「読み取りと実行」と「読み取り」にだけ与えられていた場合、コマンドプロンプトを起動し、
[icacls C:\Xxxxx\Xxxxxx /grant:r users:(RX,R) /T]と入力、
Enter([:r]は以前与えていた許可と入れ替えることを意味し、[RX]が「読み取りと実行」、[R]が「読み取り」を表す)。これで、前述の変更を行ったフォルダ以下のすべてのファイルのアクセス許可を元に戻せる。
2.再び、「プロパティ」⇒「セキュリティ」⇒「詳細設定」⇒「所有者」タブ⇒「編集」とクリックする。
3.「他のユーザーまたはグループ」をクリックし(図-4-①)、「選択するオブジェクト名を入力してください」という欄の中に
[NT SERVICE\TrustedInstaller]と入力し(図-4-②)、
「OK」をクリック。
4.続けて「OK」をクリックすると、図-2と同様の「このオブジェクトの所有権を取得した場合、云々」というメッセージが現れるので、「OK」を。
5.さらに「OK」でプロパティを閉じる。
図-4

PCに関してセキュリティを高めるに越したことはないが、そうすればするほど、ますますユーザーの自由度は狭められることになる。如何ともしがたいところであろう。
Windows 7などでは、あるファイルに対し変更や削除を行おうとすると、「この操作を実行するアクセス許可が必要です。」、「このファイルを変更するには、TrustedInstallerからアクセス許可を得る必要があります。」という警告が現れ、アクセス拒否されることが多々ある。この場合、右クリックの「プロパティ」から「セキュリティ」を選択し、「編集」をクリックしてもアクセス許可を変更することはできない。これを可能にするには、所有権をTrustedInstallerから現在のユーザに移す必要がある。その方法は二通りあるようである。
○ その一つは、コマンドプロンプトを使う方法である。
1.コマンドプロンプトを右クリックし、「管理者として実行」から起動する。
2.[takeown /F]でファイルやフォルダの所有者を現在のユーザに変更する。
例えば、[takeown /F "C:\Program Files\Xxxxx\Xxxxxx.ini"]と入力し、Enterを押下する。この場合、もちろん、パス内に空白がなければダブルクォテーションは不要である。また、フォルダ名のあとに半角の空白を置いて[/R]と入力すると、そのフォルダ以下のすべてのフォルダ及びファイルの所有者が現在のユーザに変更される。
3.[exit]と入力、Enter押下で、コマンドプロンプトを終了する。※ その他のパラメーターについては、[takeown /?]、Enterで表示されるヘルプまたはTechNetのCommand-line Referenceを御覧下さい。
○ もう一つ、コマンドプロンプトに不慣れな方は、右クリックから行う方法がある。
1.フォルダやファイルを右クリックし、「プロパティ」⇒「セキュリティ」⇒「詳細設定」とクリックする。
2.「セキュリティの詳細設定」のウィンドウ内の「所有者」タブをクリックし、「編集」をクリック。
3.「所有者の変更」欄内の現在のユーザ名を選択し(図-1)、「OK」をクリックすると、図-2のような「このオブジェクトの所有権を取得した場合、このオブジェクトのプロパティを閉じてから再度開くと、アクセス許可の表示または変更を実行できます。」というメッセージが現れるので、「OK」をクリック。
4.さらに、「OK」でプロパティを閉じる。
図-1

図-2

上のいずれかの方法で所有者をTrustedInstallerから自己に変更すれば、アクセス許可を変更することができる。アクセス許可の変更についても、プロパティの編集とコマンドプロンプトの二通りの方法がある。
○ プロパティから行う方法
1.「プロパティ」⇒「セキュリティ」⇒「編集」とクリック。
2.「グループ名またはユーザー名」欄内の「Users」を選択し(図-3-①)、下部の「Usersのアクセス許可」欄内
の「変更」にチェックを入れる(図-3-②)。
3.「OK」をクリックしていき、プロパティを閉じる。
○ 通常は上の方法で問題ないが、複数のファイルのアクセス許可を変更する場合には、icaclsコマンドが便利である。
1.コマンドプロンプトを起動する。
2.例えば、あるフォルダ内のすべてのファイルについて、現在のユーザーのアクセス許可に「変更」を追加したいときは、
[icacls C:\Xxxxx\Xxxxxx\* /grant users:M]と、
アクセス許可をフルアクセスにしたいときは、
[icacls C:\Xxxxx\Xxxxxx\* /grant users:F]と、
また、あるフォルダ内のファイルだけでなく、そのサブフォルダ内のファイルすべてに対しても、アクセス許可に「変更」を追加したいときは、
[icacls C:\Xxxxx\Xxxxxx /grant users:M /T]と、
入力して、Enterを押下。
※ なお、[users]と入力した位置には、SID(Security Identifier、セキュリティ識別子)又はfriendly nameを入力することになっているので、[users]と打ってみたが、何と入力するのが最善なのか、私には分からなかった。個人で使用しているPCでは問題ないとは思うが。
3.「○○個のファイルが正常に処理されました。0個のファイルを処理できませんでした」として、「処理ファイル」が列挙されるので、確認し、[exit]でコマンドプロンプトを終了。
※ パラメーターの詳細については、[icacls /?]で表示されるヘルプないしTechNetのCommand-line Referenceを御覧下さい。
※ これらコマンドによる操作は、一瞬で多数のファイルを処理することができるので、便利である反面、危険でもある。細心の注意を払って行って下さい。コマンドプロンプトにあまり触れたことない方は、プロパティ操作の方が、安全かもしれません。
図-3

以上で、ファイルの上書きや削除が可能になる。
因みに、わたくしの場合、UEFIに関する知識の全くないまま、UEFIに準拠したIntel X79のマザーボードにWindows 7 64bitをインストールしようとして不具合が生じ、なぜかOSを入れたSSDとは別のHDDにBoot Manager(Bootmgr)関連のファイルがインストールされてしまい、これらのファイルを削除するためにこの方法を利用した。このHDDには1TB近いデータが入っており、これを一旦他に移して、パーティションを作成し直して、それを書き戻すことも考えたが、それには数時間かかってしまうので、面倒ではあったが、この方法で削除するしかなかった。
二、
なお、削除の場合は問題ないが、ファイルに変更を加えた場合、ファイルの種類によってはセキュリティ上、元の状態に戻しておいた方が望ましいことも多い。その方法は以下の通りである(参照:msdn 'SYSK 277: How-To Bring Back the TrustedInstaller')。
1.まず、上のプロパティの操作で「Usersのアクセス許可」欄のチェックを入れた項目のチェックを外し、元に戻す。
また、icaclsコマンドで元に戻すには、元の許可が例えば「読み取りと実行」と「読み取り」にだけ与えられていた場合、コマンドプロンプトを起動し、
[icacls C:\Xxxxx\Xxxxxx /grant:r users:(RX,R) /T]と入力、
Enter([:r]は以前与えていた許可と入れ替えることを意味し、[RX]が「読み取りと実行」、[R]が「読み取り」を表す)。これで、前述の変更を行ったフォルダ以下のすべてのファイルのアクセス許可を元に戻せる。
2.再び、「プロパティ」⇒「セキュリティ」⇒「詳細設定」⇒「所有者」タブ⇒「編集」とクリックする。
3.「他のユーザーまたはグループ」をクリックし(図-4-①)、「選択するオブジェクト名を入力してください」という欄の中に
[NT SERVICE\TrustedInstaller]と入力し(図-4-②)、
「OK」をクリック。
4.続けて「OK」をクリックすると、図-2と同様の「このオブジェクトの所有権を取得した場合、云々」というメッセージが現れるので、「OK」を。
5.さらに「OK」でプロパティを閉じる。
図-4

PCに関してセキュリティを高めるに越したことはないが、そうすればするほど、ますますユーザーの自由度は狭められることになる。如何ともしがたいところであろう。