XP Homeでファイルが消せなくなったときの対処方法
cygwinには直接関係内のですが、愛用しているEeePC901のOSを再インストールしまして、AndroidのNative開発環境として、android-ndk-r5cを入れました。インストール方法はここら辺を参考にしてください。
ndkをビルドするためにはcygwinもインストールしまして、cygwinのユーザの下にprojectsフォルダを作り、その下にAndroidプロジェクトを置くことにしました。作業は順調に進んだのですが、デスクトップからEeePC901にプロジェクトをコピーしたときに、どう間違えたか、ファイルのアクセス権限がおかしくなってしまいました。
結局、Windowsからもcygwinからもファイルが変更できない状態になり、もちろん、削除もできません。そこで、Windows XP Home Editionで頑張ってアクセス権限変更を行ったので、防備録として書いておきます。
SubInAclのダウンロード
アクセス権限を変更するツールはいろいろありますが、一番楽に手に入ったので、これを使いました。ダウンロードはここからできます。subinacl.msiをダウンロードし、インストールしてもいいですし、適当な解凍ツール(7-zipなど)を使って、subinacl.exeのみを取り出してもOKです。どこか適当な場所にsubinacl.exeをコピーしてください。とりあえず、C:\に置きました。msiファイルをインストールした場合は、C:\Program Files\Windows Resource Kits\Toolsフォルダに入っています。
XP Homeのセーフモード起動
XP Home Editionは、セーフモード起動したときに、アクセス変更ができるようになります。そこで、EeePC901をセーフモードで起動します。起動時にF8を押すと、セーフモードで起動します。
コマンドプロンプトの起動
セーフモードで起動したら、コマンドプロンプトを立ち上げます。そして、削除したい(権限を書き換えたい)フォルダのあるディレクトリに移動します。私の場合は、projectsフォルダなので、下記のように打ち込みます。
cd c:\cygwin\home\minao\projects
オーナーの書き換え
SubInAclを用いて調べてみると、オーナーがguestになっていました。そこで、問題のフォルダ以下全部にあるファイルやフォルダのオーナーを、自分に書き換えたいと思います。
現状のチェックは下記のような感じです。問題のフォルタは、sjis2uというフォルダでした。
c:\subinacl /file sjis2u
オーナーを書き換えます。下記のような感じです。minaoというのはユーザ名です。
c:\subinacl /subdirectories sjis2u\*.* /setowner=minao
フルアクセス可能に変更
オーナーが自分になったので、もう設定も自由にできます。キャプチャしていませんが、sjis2uフォルダをマウスで右クリックして「セキュリティ」を選びます。そして、自分のアクセス権限を「フルコントロール」に変更します。
このときに「詳細設定」を選択し、「子オブジェクトすべてのアクセス許可エントリを、ここに表示されているエントリで子オブジェクトに適用するもので置換する」にチェックを入れて「適用」します。日本語が変ですが、これでsjis2uフォルダ以下全てフルアクセスになるはずです。
フォルダ削除します
目的は達成しましたが、元々デスクトップから持ってきたファイルなので、一度削除して、もう一度持ってくるために、フォルダを削除しました。「アクセスが拒否されました」が出ることも無く、全て削除されました。
リブート
セーフモードでやることは終わったので、再起動します。
以上、XP Home Editionで、消すことができないファイルができてしまったときの対処方法を書きました。