如何在 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)
将根据可执行计算机自动为您提供system32
或syswow64
的结果。
可悲的是,简单的方法只在 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# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误
背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口