Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式检索到;“程序文件”;文件夹?_C#_.net_Windows_Windows Xp_Program Files - Fatal编程技术网

C# 如何以编程方式检索到;“程序文件”;文件夹?

C# 如何以编程方式检索到;“程序文件”;文件夹?,c#,.net,windows,windows-xp,program-files,C#,.net,Windows,Windows Xp,Program Files,可能重复: 我意识到用户更改Windows默认值C:\Program Files的可能性很小,但奇怪的事情发生了 如何从系统中获取程序文件的正确路径?您可以访问名为:%PROGRAMFILES%的环境变量 i、 e: 在C#中: .NET为程序文件、我的文档等提供了“”的枚举 要从枚举转换为实际路径的代码如下所示: Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) 您将在课堂上使用 Environment.Ge

可能重复:

我意识到用户更改Windows默认值
C:\Program Files
的可能性很小,但奇怪的事情发生了


如何从系统中获取程序文件的正确路径?

您可以访问名为:%PROGRAMFILES%的环境变量

i、 e:

在C#中:


.NET为程序文件、我的文档等提供了“”的枚举

要从枚举转换为实际路径的代码如下所示:

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

您将在课堂上使用


Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
可能是最好的解决方案,但另一种可能的变体是评估
ProgramFiles
环境变量的值。为此,可以使用类的或方法:

再加一句

如果在32位模式下运行(即使在64位操作系统上),SpecialFolder.ProgramFiles和%ProgramFiles%将返回..程序文件(x86)

如果您特别需要一个和/或另一个,则需要检查如下:

32位系统:

SpecialFolder.ProgramFiles
=…程序文件\

64位处理中的32位系统:
SpecialFolder.ProgramFiles
=…程序文件(x86)\
Environment.GetEnvironmentVariable(“ProgramW6432”)
=…程序文件\

64位进程中的位系统:
SpecialFolder.ProgramFiles
=…程序文件\
Environment.GetEnvironmentVariable(“PROGRAMFILES(X86)”)
=…程序文件(X86)\

显然,这取决于您所在的地区等

Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

获取64位Windows中的“program files(x86)”和32位Windows中的“program files”。

更正:它应该是%PROGRAMFILES%\Maxis\SimCity。%PROGRAMFILES%变量已包含“C:\”。啊!谢谢你,梅罗斯。现在更改它…可能性或不是那么小-在西班牙语版本上,默认路径是C:\Archivos de programa\这就是为什么任何理智的开发人员都应该从系统中检索路径,而不是硬编码它…对于瑞典版本,默认路径是C:\program\。绝对不要硬编码。意大利语是C:\Programm。如果我没记错的话,这里有一个问题:它不区分x64和x86版本的Windows。如果您正在查找%programfiles(x86)%,则必须找到另一种方法。确实如此!有一个涉及x64问题的相关问题:在64位操作系统上,这取决于编译的平台。例如,如果您为任何CPU或x64编译,这将为您提供C:\程序文件。如果您为x86编译,这将为您提供C:\ProgramFiles(x86)。或Environment.GetEnvironmentVariable(“ProgramFiles”)?谢谢!作为后续操作(因为我需要),common files文件夹还有CommonProgramW6432环境变量。
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
try {
    Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles )
catch( ArgumentException ex ) {
    Console.Out.WriteLine( ex.StackTrace );
}
Environment.GetEnvironmentVariable("ProgramFiles")

Environment.ExpandEnvironmentVariables("%ProgramFiles%")
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)