我有一个非常简单的exe,可以在zip文件中下载其他一些内容。我想要做的是将其中一个文件移动到程序文件中的某个位置。当我这样做时,它说我没有权限,除非我以管理员身份运行它。我并不总是有这个选择。我对此表示怀疑,但如果没有管理员权限,无论如何都要做到这一点?这就是它所做的一切:
File.Copy(@"c:/file.txt", @"C:/Program Files (x86)/Folder/file.txt");
答案 0 :(得分:5)
不,除非您(作为管理员)已经为您的用户设置了写入该目录的访问权限,否则无法做到这一点。对Program Files的正常访问权限不允许普通用户写入该位置,并且没有覆盖。
这样做的一个原因是阻止viruses感染您的系统。由于Program Files
由所有用户共享,因此放置在那里的文件可能由登录系统的所有用户执行。
此外,它可以防止编写错误的程序保存程序文件中的设置,这可能会影响/覆盖其他用户'设置。
答案 1 :(得分:0)
using System.Security.AccessControl;
using System.Security.Principal;
var dir = System.Environment.ExpandEnvironmentVariables("%systemdrive%\\Program Files");
if (!Directory.Exists(dir))
{
//System.IO.Directory.CreateDirectory(dir);
string fileName = "file.txt";
string sourcePath = @"C:/"; //@AppDomain.CurrentDomain.BaseDirectory;
string targetPath = dir;
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(sourceFile, destFile, true);
}