我使用程序文件的硬编码目录路径来移动文件。我现在想使用正确的方法在Program Files中找到该文件夹。
我发现这个方法正在做一些谷歌搜索,这是我想要使用的:
static string ProgramFilesx86()
{
if( 8 == IntPtr.Size || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
{
return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
}
return Environment.GetEnvironmentVariable("ProgramFiles");
}
我很遗憾不确定如何实施和使用此方法。
我如何使用上述代替:
if (File.Exists(@"C:\PROGRA~1\TEST\ok.txt"))
File.Delete(@"C:\PROGRA~1\TEST\ok.txt");
File.Copy(@"C:\PROGRA~1\PROGRAMFOLDER\ok.txt", @"C:\PROGRA~1\TEST\ok.txt");
答案 0 :(得分:4)
使用
更容易获得像Program Files这样的特殊文件夹string programFilesFolder =
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
继续这个例子,你可以做这样的事情
string pathToFile =
Path.Combine(programFilesFolder, @"TEST\ok.txt");
if (File.Exists(pathToFile))
File.Delete(pathToFile);
<强>更新强>
修改代码示例以始终获取32位Program Files文件夹,无论您运行的是32位还是64位操作系统,因为@Mario指出这是您的原始代码正在执行的操作。
答案 1 :(得分:0)
string fileName = Path.Combine( ProgramFilesx86(), applicationPath, @"ok.txt");
if (File.Exists( fileName ) )
{
File.remove( fileName );
}
string sourceFile = Path.Combine( ProgramFilesx86(), @"\PROGRAMFOLDER", "ok.txt" );
File.Copy( sourceFile, fileName);
修改强> 你不应该使用这种方法。程序文件夹取决于程序的功能而不是系统!您必须知道它们是否安装到ProgramFiles或ProgramFilesX86文件夹中。 然后使用Eric J.的答案。
答案 2 :(得分:-1)
string sourceFolder =
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
string source =
Path.Combine(sourceFolder,@“ok.txt”);
string targetFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string target = Path.Combine(targetFolderPath,@“ok.txt”);
if(File.Exists(source))
File.Delete(源);
File.Copy(targetFolderPath,source);