以编程方式将文件移动到没有管理员权限的程序文件?

时间:2013-01-20 20:07:35

标签: c#

我有一个非常简单的exe,可以在zip文件中下载其他一些内容。我想要做的是将其中一个文件移动到程序文件中的某个位置。当我这样做时,它说我没有权限,除非我以管理员身份运行它。我并不总是有这个选择。我对此表示怀疑,但如果没有管理员权限,无论如何都要做到这一点?这就是它所做的一切:

File.Copy(@"c:/file.txt", @"C:/Program Files (x86)/Folder/file.txt");

2 个答案:

答案 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);

        }