以编程方式创建的子文件夹在Windows资源管理器中不可见

时间:2013-06-22 20:18:53

标签: c# windows-7 directory

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

Win-7 64,英特尔SSD

以具有admin priv的用户身份登录公司域,但不是“Administrator”

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:“目录不为空”。应该意味着创建了subdir和file。

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

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

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

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

  • Build as x64

  • 使用“以管理员身份运行”

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

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

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

“检查您是否可以在C:\ Users \ JimC \ AppData(文件夹虚拟化)中找到您的目录和文件。 相关:Why Virtualization on ProgramData folder in MS Vista?

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

我从C:\ Users下删除了virutalized目录,它开始正常工作。不确定它是如何在第一时间创建的,但看起来,当它存在时,尝试创建我期望它的目录而不是找到虚拟目录。

再次感谢dtb。