2010-04-13 42 views
2

在我的公司,我们正在编写一个脚本来处理我们通常会手工完成的简单任务。我正在使用c#删除c:\ documents和settings \中的配置文件,只有几个。这些将被简单地留下。问题在于即使将代码设置为正常并将admin用户标记为所有者,它们也不会被删除。他们说快速启动文件夹的访问被拒绝。我正在使用递归权限更改方法,我知道它的工作原理。与文件属性相同的东西。为什么它不工作?我该如何解决?删除Windows不希望我删除的文件?

+0

哪个API调用失败? – reuben 2010-04-14 07:43:27

回答

3

它可能不是权限问题,而是文件锁定问题。两者似乎都是权限问题。

+0

文件锁定是通过将​​属性设置为正常来设置的属性,对吧? – user315881 2010-04-13 20:35:28

+0

@ user315881:不,我的意思是文件被锁定了一个对文件具有锁定句柄的进程(通常意味着该文件已被写入)。除了通过获取锁的进程以外,您无法关闭它。 – Randolpho 2010-04-13 20:46:57

+0

您可以使用名为* Unlocker *的小型实用程序检查锁定手柄是否会导致删除问题。它可以从网上免费下载。 – stakx 2010-04-13 20:56:55

0

这是非常棘手的,你将需要使用PInvoke调用本地API(我不确定哪些)。 Unlocker,解锁其他进程正在使用的文件的实用程序会执行此操作。它尚未与Windows 7和某些版本的Windows的64位版本一起使用。

+1

Unlocker曾经很棒,但我认为它是在1.8.6中添加了一个后门特洛伊木马(这些'ebay'快捷键)。该网站声称,ebay快捷键已被删除,并用'bing toolbar'取代,但我仍然对使用它有所怀疑。 – 2010-04-13 20:45:28

+0

是@Zach Johnson可悲的是这种情况 – TheVillageIdiot 2010-04-14 13:26:45

6

问题可能是其他进程已经打开这些文件或目录的句柄。为了帮助您找出哪些进程会受到责备,您可以使用Process Explorer的查找功能来查找它们。

(只是要清楚:这不是关于如何编写代码来删除文件的建议,但对如何找出到底是什么原因导致你目前的系统无法工作的建议)

1

你可以通过从http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

以管理员身份运行,并使用Find-> Handle或Dll来查看它是否被锁定来验证是否由文件锁定而不是访问控制造成的。

否则,您应该能够获得所有权并授予访问权限,以便在没有问题的情况下进行删除。