如何在 C# 中获取 Windows\system32\config\systemprofile\AppData\Local\ 文件夹路径?

Posted

技术标签:

【中文标题】如何在 C# 中获取 Windows\\system32\\config\\systemprofile\\AppData\\Local\\ 文件夹路径?【英文标题】:How to get Windows\system32\config\systemprofile\AppData\Local\ folder path in C#?如何在 C# 中获取 Windows\system32\config\systemprofile\AppData\Local\ 文件夹路径? 【发布时间】:2014-12-03 12:11:23 【问题描述】:

以编程方式获取此文件夹路径的最佳方法是什么: Windows\system32\config\systemprofile\AppData\Local?

【问题讨论】:

%systemroot% 会将您带到 windows 文件夹...但就我的研究(刚刚完成)而言,没有像我们使用 %appdata% 那样的直接快捷方式 我相信这是 SYSTEM 帐户的 AppData 路径。因此,如果您以 SYSTEM 帐户运行,您应该能够使用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) - 尽管我没有对此进行测试。如果您不是以 SYSTEM 帐户运行,那么您可能在那里没有业务。 【参考方案1】:

对不起,我不能写 cmets。你用路径做什么?应用程序存储在哪里?这会让你到达那里??

string path = "C:\\Windows\system32\config\systemprofile\AppData\Local";

提供的 C: 是驱动器的名称。

您确实需要稍微扩展您的问题。

这是一个重复的问题吗??

How to read existing text files without defining path

【讨论】:

我认为您误解了 programmatically 的含义。 是的,我可以,但我认为这可能是获得这个特殊文件夹路径的干净代码的解决方案 @SonerGönül 不,我没有。这是程序化的。我认为 OP 正在寻找的可能更接近 Rohan 上面所说的。这取决于 OP 如何访问它。如果他的应用程序在那里,那就是System.IO.Path.Combine(appPath, etc.); 如果他直接从安装在其他地方的程序访问它,他将不得不添加更多路径。 OP如何访问它。这就是问题所在。就像我说的。我无法发表评论,所以我想目前是@downvoters 规则。只是想帮忙。 @AndreiKarcheuski 您能否为您的问题添加更多细节?请参阅上面我对 Soner 的回复 @FrankPytel 我刚刚登录 c# 应用程序,我有一个任务需要在该文件夹中存储日志文件。所以我只是在寻找如何以编程方式获取该文件夹路径,该应用程序可以安装在不同的操作系统上。【参考方案2】:

示例代码

HttpContext.Current.Server.MapPath();
System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;

【讨论】:

【参考方案3】:

我觉得你可以用Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData

在我这样的项目中 string configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyProject", "SERVICER", "config.ini");

它为所有用户获取应用程序数据目录(包含系统、服务、访客……)。我用它来保存服务配置!!

【讨论】:

错了。在我的系统上,CommonApplicationData 返回C:\ProgramData 对不起,您的问题是错误的!但我不知道你想要什么!!为什么你需要这样的链接?存储帐户之间共享的数据,或者systemprofile将在用户的上下文中被替换??如果对于上述两种情况,Environment.GetFolderPath 方法将为您提供非常相似的结果。但是如果你真的想保存到Windows\system32目录,考虑下面的选项:Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "config", Environment.UserName, "AppData", "Local"); 我需要以编程方式创建目录C:\Windows\System32\config\systemprofile\Desktop(在 32 位架构的情况下)和 C:\Windows\SysWOW64\config\systemprofile\Desktop(在 64 位架构的情况下)如果它不存在,以便使用MS Office Interop 来自 Windows 服务。 Environment.GetFolderPath(Environment.SpecialFolder.SystemX86) 将根据可执行计算机自动为您提供system32syswow64 的结果。 可悲的是,简单的方法只在 dotnet 4 或更高版本中。如果你还想达到目的,可以参考下面的,据我所知大部分windows系统都可以,但我还没有机会在低端电脑上测试! [gist.github.com/DK189/11399b58985a1023f01d50118c23014a](Source代码)【参考方案4】:

你可以这样获取路径:

Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData)

【讨论】:

错了。当从 Windows 服务调用时,LocalApplicationData 在我的系统上返回 C:\Users\anton\AppData\Local

以上是关于如何在 C# 中获取 Windows\system32\config\systemprofile\AppData\Local\ 文件夹路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中执行命令行

如何在 C# (Winforms) 中复制或读取假脱机文件

如何获取 Windows SYSTEM 用户令牌

c# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误

如何获取系统盘符?

背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口