1

我正在尝试将子目录添加到现有路径。

Win-7 64,英特尔固态硬盘

以具有管理员权限的用户身份登录公司域,但不是以“管理员”身份登录

Visual Studio 2008,正常启动(不是“以管理员身份运行”)

这是 MyApp(WinForms、Debug、x86):

 [STAThread]
  private static void Main(string[] args)
  {
     string p = @"C:\ProgramData\MyCompany\MyApp";
     Directory.CreateDirectory(p);
     string f = "a.txt";
     string fullPath = Path.Combine(p, f);
     File.WriteAllText(fullPath, string.Empty);
     Directory.Delete(p);

不出所料,最后一行抛出 IOException: "The directory is not empty"。应该意味着创建了子目录和文件。

问题:Windows 资源管理器不显示 MyApp 子目录(即使在刷新后,在地址栏中键入路径、关闭/重新打开或重新启动)。

C:\ProgramData\MyCompany\ 是由另一个应用程序的安装程序创建的;Windows 资源管理器说它的当前所有者是系统。

使用相同的 IDE 创建控制台应用程序(调试,x86),复制上述行并运行;Windows 资源管理器很高兴向我展示 DigitalTestApps 和里面的文件。

如果我对 MyApp 执行以下任一操作,问题就会消失(即 Windows 资源管理器向我显示“MyApp”子目录和其中的文件):

  • 构建为 x64

  • 使用“以管理员身份运行”启动 Visual Studio

  • 使用“MyApp”以外的任何名称(但出于遗留原因,我需要使用 MyApp)

这可能是什么原因造成的?

4

1 回答 1

0

@dtb 太谦虚(或太忙),无法重新发布他的评论(这解决了我的问题)作为答案,所以我将在此处复制他的评论,以便其他人更容易看到结果如何:

“检查您是否可以在 C:\Users\JimC\AppData(文件夹虚拟化)的某处找到您的目录和文件。相关:为什么要在 MS Vista 中的 ProgramData 文件夹上进行虚拟化?

所以这是我在阅读了他的建议后所做的:

我从 C:\Users 下删除了虚拟化目录,它开始正常工作。不确定它最初是如何创建的,但似乎虽然它存在,但它试图创建我期望它找到虚拟化目录的目录。

再次感谢 dtb。

于 2013-07-04T16:42:14.457 回答