2013-01-20 16 views
1

我有一個非常簡單的exe文件,下載一個zip文件與其他的東西。我想要做的是將其中一個文件移動到程序文件中的某個位置。當我這樣做時,它說我沒有權限,除非我以管理員身份運行它。我並不總是有這個選擇。我懷疑它,但無論如何這樣做沒有管理員權限?這是所有它在做什麼:以編程方式將文件移動到沒有管理權限的程序文件?

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

除了'WinXp'之後的操作系統的安全漏洞,這根本就沒有辦法。但是更舊的'Windows(TM)'不符合'.Net Framework'的要求。 –

回答

5

沒有,有沒有辦法做到這一點,除非你(作爲一個管理員)已經建立了訪問權限的用戶寫入到該目錄。對程序文件的正常訪問權限不會讓普通用戶寫入該位置,並且不會覆蓋。

這樣做的一個原因是阻止viruses感染您的系統。由於Program Files由所有用戶共享,因此放置在那裏的文件可能會由登錄到系統的所有用戶執行。

此外,它可以防止程序寫得很糟糕的程序在Program Files中保存設置,這可能會影響/覆蓋其他用戶的設置。

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

     } 
相關問題