【问题标题】:Why would two console applications on the same machine return different results from Directory.Exists(sameDirectory)?为什么同一台机器上的两个控制台应用程序会从 Directory.Exists(sameDirectory) 返回不同的结果?
【发布时间】:2023-03-17 15:33:01
【问题描述】:

我有两个 .net 控制台应用程序,我 F10 在同一台机器上调试和停止两个应用程序的第一行。

然后我将以下手表添加到两个 Visual Studio 中:Directory.Exists(@"C:\Program Files\MyDirectory")

一个应用程序返回true 而另一个应用程序返回false 的可能原因是什么。

返回true的应用程序错误,我可以在Windows资源管理器中验证并创建和删除目录。

我在错误返回true的应用程序上尝试了以下操作:

  1. 排除app.manifest文件,重新编译调试。

  2. app.config 文件中删除了以下内容:


<system.web>
  <membership defaultProvider="ClientAuthenticationMembershipProvider">
    <providers>
      <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
    </providers>
  </membership>
  <roleManager defaultProvider="ClientRoleProvider" enabled="true">
    <providers>
      <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
    </providers>
  </roleManager>
</system.web>
  1. Visual Studio 都不是以管理员身份在任务管理器中和通过System.Environment.UserName 运行的,我很确定它们都以相同的用户身份运行。

还有什么可能导致这种行为?

【问题讨论】:

  • 你是Console.WriteLine 是结果还是用鼠标(h)悬停检查值?
  • @cramopy,我 F10 一次,然后当调试器在第一行暂停时,我将手表添加到两个 Visual Studios。
  • 它可以像不同的字符串一样简单,例如额外的空间。
  • @MartinLottering,%localappdata%\VirtualStore 下是否有对应的文件夹?我知道您说过您已经剥离了所有内容并检查了它们两个控制台应用程序是否以相同的身份运行,但这是我能想到的唯一事情(%localappdata% 映射到 C:\Users\[USERNAME]\AppData\Local
  • @MartinLottering,技术不是很好! ;-) VirtualStore 之前曾让我失望过一次或两次,奇怪的是,Visual Studio 的两个实例在他们是否看到它时不一致。也许有人以管理员身份运行?可能值得查看 VirtualStore 中文件夹的 creation 日期,看看这是否可以为您提供有关两者行为不一致的原因的任何提示,例如在查看创建日期后,您认为其中一个 VS 实例将在 before 和另一个 after =) 之后打开

标签: c# windows-7


【解决方案1】:

这是由 Windows Vista 中首次引入的 File and Registry Virtualisation 引起的,这意味着当应用程序满足条件时,它将看到对受保护位置的读/写重定向到路径 %UserProfile%\AppData\Local\VirtualStore 下的文件夹(也可以可以通过%localappdata%\VirtualStore 访问。这意味着两个不同的应用程序可以获得Program Files 文件夹内容的不同视图,例如:

C:\Users[Your_User_Name]\AppData\Local\VirtualStore\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE

C:\Program Files (x86)\microsoft visual studio 14.0\common7\ide

以我的VirtualStore 文件夹层次结构中存在的示例文件夹为例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多