我有一個非常簡單的exe文件,下載一個zip文件與其他的東西。我想要做的是將其中一個文件移動到程序文件中的某個位置。當我這樣做時,它說我沒有權限,除非我以管理員身份運行它。我並不總是有這個選擇。我懷疑它,但無論如何這樣做沒有管理員權限?這是所有它在做什麼:以編程方式將文件移動到沒有管理權限的程序文件?
File.Copy(@"c:/file.txt", @"C:/Program Files (x86)/Folder/file.txt");
我有一個非常簡單的exe文件,下載一個zip文件與其他的東西。我想要做的是將其中一個文件移動到程序文件中的某個位置。當我這樣做時,它說我沒有權限,除非我以管理員身份運行它。我並不總是有這個選擇。我懷疑它,但無論如何這樣做沒有管理員權限?這是所有它在做什麼:以編程方式將文件移動到沒有管理權限的程序文件?
File.Copy(@"c:/file.txt", @"C:/Program Files (x86)/Folder/file.txt");
沒有,有沒有辦法做到這一點,除非你(作爲一個管理員)已經建立了訪問權限的用戶寫入到該目錄。對程序文件的正常訪問權限不會讓普通用戶寫入該位置,並且不會覆蓋。
這樣做的一個原因是阻止viruses感染您的系統。由於Program Files
由所有用戶共享,因此放置在那裏的文件可能會由登錄到系統的所有用戶執行。
此外,它可以防止程序寫得很糟糕的程序在Program Files中保存設置,這可能會影響/覆蓋其他用戶的設置。
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);
}
除了'WinXp'之後的操作系統的安全漏洞,這根本就沒有辦法。但是更舊的'Windows(TM)'不符合'.Net Framework'的要求。 –