System.IO.Directory.Delete v Git存储库-未经授权的访问

时间:2020-02-18 10:15:51

标签: vb.net git

我正在写一个软件来维护Git存储库中的文件。

我编写的一个可执行文件有一个简单的用途:删除与该软件有关的所有内容。它是在单独的,完全不相关的Windows文件夹中提供给用户的。

它需要删除的文件夹之一包含一个Git存储库,即它包含一个隐藏的.git文件夹

现在这是我遇到的问题。当我在PC本身上查看文件系统时,我可以找到该文件夹​​,单击该文件夹,将其删除....,它消失了。没问题。

因此,我尝试通过在该文件夹中调用 System.IO.Directory.Delete 来在组装中执行相同的操作。

这就是我所发现的:

  1. 所有内容均从文件夹中删除,但文件夹本身仍然存在
  2. 当我尝试从Windows资源管理器中手动删除该文件夹时,它会给我一些未经授权的访问消息。我无法删除它。
  3. 真正摆脱它的唯一方法是,然后在Windows资源管理器中尝试重命名该文件夹,这时我再次收到未授权访问消息,但您不知道吗...。该文件夹消失了。 / li>

有什么用!?!?为什么System.IO.Directory.Delete与我通过Windows资源管理器进入并手动删除文件夹的功能完全不同?

我尝试了很多事情。例如,我尝试获取目录中的所有文件并将其所有属性设置为“普通”,并尝试通过所有文件夹并将其属性设置为“目录而不隐藏”。仍然没有喜悦。我什至尝试使用 Process.Start 来运行 RMDIR文件夹/ S / Q -可以从.bat文件完美运行-但会发生同样的事情。

我确实安装了TortoiseGit及其所有依赖项,以防万一.....并且该文件夹上确实带有绿色的“ Tick”(勾号)以指示其内容是最新的。

所以我的问题是: 有什么方法可以通过VB.NET成功删除包含Git存储库的文件夹?

1 个答案:

答案 0 :(得分:0)

我终于找到了这个神秘的谜底。

罪魁祸首是TortoiseGit

当我在删除文件夹之前杀死了 TGitCache.exe 进程时,一切正常。

去吧。