Vista なら 'icacls.exe' を使おう! なんてこと書いていてなんだけど、いまいちです。
というのは、ACL の継承を扱えないから。
"icacls.exe" には /save, /restore があり、ACL の SDDL による保存 & 復元ができて便利なはずなんですが、継承された ACL は復元しても消えてくれないため、一度 ACL を全部消してやる必要があります。もっとも、全部消してやると削除した user ですらはじかれてしまうので、BUILTIN\Administrators には full control 与えときましょう。
で、これをやりたいんですけど、"icacls.exe" にはこれを行う機能が無いんです。/reset という switch はあるんですが、これは継承された ACL で初期化する機能のためこの場合には使えません。
では、どうしたらいいのか?
Windows Vista 以降では推奨されていない "cacls.exe" を引っ張りださないといけません。Usage にも推奨されていないと書いている上に usage が途中から文字化けしている有様orz。まあ、そんなものでもとりあえず用が足せるので。下記のような感じ。
ECHO Y| cacls.exe "%TARGET%" /G "BUILTIN\Administrators":F
このあとに restore してやればいい感じになるでしょう。
これなんとかしてください。マジで。
<追記>
よくよく検証してみると、restore を行うと勝手に ACL が親から継承されるようです。継承されない switch 作ってください。マジ困ります。