前两天想要删除Windows Server 2008虚拟机中的备用驱动目录 x:\Windows\System32\DriverStore\FileRepository
引发“Access Denied”错误。

使用了Vista中的Take Owner的脚本,比较奇怪的是注册表添加成功,但是Windows Server 2008中右键确无法看到右键菜单。

仔细研究了一下下面的注册表:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@="Take Ownership"
"Extended"=""
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Take Ownership"
"Extended"=""
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"


然后建立了一个 mytakeowner.cmd 文件,里面截取了下面两个命令。

takeown /f %1 /r /d y
icacls %1 /grant administrators:F /t


保存,然后将其保存在c:\windows\system32目录中。

然后再命令符方式下执行 mytakeowner 文件名/目录名

获得权限之后,就可以删除这些目录了。

很简单,备份一下以防下次查找。看来Vista 和Windows Server 2008还是有些不同的。