如何用程序删除win 7下SYSTEM权限的目录

win7系统由于安装程序等操作,可能会在系统中留下一些所有权限是SYSTEM角色的目录,例如我的系统以前在C盘的QQ卸载后的遗留文件(下图)。

System是Windows系统中最高权限角色(组),比Administrator用户权限高,这样的目录无法手工删除。网上给的方法是右键点击文件夹-属性-安全-高级-所有者改为当前用户,权限标签页选中当前用户(一般就是administrator了)。这时候我们常常希望勾选下面的2个选项然后点确定对子文件夹做同样的修改,但这时候子目录还是SYSTEM组权限的,只能一个个手动修改,如果子目录数量或者层数多的话这将非常麻烦,最好写程序修改。 类似的中文资料比较少,下面是一些能用的资料链接和我的代码。程序只是把目录和里面的文件的owner从SYSTEM改为当前用户,然后可右键选中一次删除。

看了一些链接,下面的stackoverflow文章的回复给出的代码是比较简单的,感觉比搜到的C++代码明显简单:

http://stackoverflow.com/questions/5368825/taking-ownership-of-a-file-or-folder

但是这个文件用到了一个dll引用,在这里:http://processprivileges.codeplex.com

下面是控制台程序,对文件夹和子文件夹进行操作用到典型的递归处理。.net framework选择4.0,起初默认的3.0的不支持引用的dll,3.5的没试,IDE是VS 2012。如果环境不一样由于控制台程序比较简单直接用Program.cs修改也不麻烦: 下载链接

原文地址:https://www.cnblogs.com/eternalwt/p/3515319.html