gpt4 book ai didi

c# - 环境.SpecialFolder.CommonDocuments

转载 作者:太空狗 更新时间:2023-10-30 01:23:24 26 4
gpt4 key购买 nike

当我执行这条语句时:

string folderPath = 
Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments);

文件夹路径设置为 C:\ProgramData

当我在立即窗口中执行此语句时:

Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments);

C:\Users\Public\Documents 显示(这是我所期望的)。

有什么不同之处吗?

2012 年 7 月 6 日更新:

我在同一个 exe 的不同类中得到不同的结果。

我有一个类位于库中,还有一个直接链接到应用程序。

库类返回“C:\ProgramData”。链接代码返回“C:\Users\Public\Documents”。

此外,库代码为两者返回“C:\ProgramData”“Environment.SpecialFolder.CommonDocuments”和“Environment.SpecialFolder.ApplicationData”。

链接代码为“Environment.SpecialFolder.CommonDocuments”返回“C:\Users\Public\Documents”,为“Environment.SpecialFolder.ApplicationData”返回“C:\Users\Me\AppData\Roaming”。

我很困惑。

最佳答案

如果您的程序是 64 位的,则可能会发生这种情况。由于 Visual Studio 是 32 位的,当您在立即窗口中执行 Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments); 时,它会查找 Windows 32 配置单元,而您的程序会查找 64 hive 。并且有可能CommonDocuments文件夹被移动了,只会在64位hive中注册。

这是定义的 Windows 错误 here

编辑 您的更新表明它发生在同一个 EXE 中的两个类中。由于进程只能是 32 位或 64 位(不能同时是两者),这表明上述错误不适用于您(假设程序集之间的正常通信,而不是带有包装器的 COM)。您是否能够将其转化为可以发布的合适测试?

作为快速确认,可能还值得在每个代码中包含以下代码,以加倍确保它们都在同一进程中运行:

  Console.WriteLine("{0} Process {1} is {2}bit", GetType().ToString(), System.Diagnostics.Process.GetCurrentProcess().Id, IntPtr.Size * 8);

关于c# - 环境.SpecialFolder.CommonDocuments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11355484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com