2012-12-21 42 views
0

我試圖從桌面上刪除文件夾,當我得到路徑被拒絕的錯誤時。我甚至讓我的app.manifest以管理員身份啓動程序。現在使用下面的代碼,我可以成功刪除文件夾,但似乎沒有必要。即使當app.manifest設置爲以管理員身份運行程序時,獲取「訪問路徑...被拒絕」

string folder = "c:\\users\\jim\\desktop\\Proto"; 
    ProcessStartInfo process = new ProcessStartInfo("cmd.exe", @"/C " + @"rmdir " + folder + " /s /q"); 
    process.Verb = "runas"; 
    Process p = Process.Start(process); 
    p.WaitForExit(); 

我試着去使用...

string folder = "c:\\users\\jim\\desktop\\Proto"; 
    Directory.Delete(folder, true); 

是否有可能使該方法 「運行方式」?

+1

CreateDirectory刪除目錄? – ken2k

+1

我認爲這只是一個錯誤,目標是創建和刪除一個文件夾。 – Mario

+0

是的,抱歉。 C/P問題。修復。 – JimDel

回答

2

就我所知,不可能僅提升一個呼叫/命令。您必須啓動一個可能被UAC阻止的新進程。有些程序似乎是這樣做的(例如不同的Windows對話框),但它們只是在後臺調用具有不同參數的另一個進程(或它們自己的可執行文件)。

除此之外:默認情況下,您應該可以完全訪問自己桌面上的所有內容。還是你想修改其他用戶的桌面?

+0

問題中的代碼開始一個新過程 –

+0

是的,但這是OP試圖避免的。 – Mario

+0

沒錯。現在我明白了。你的回答很好。 –

0

看看this,它表明你如何運行一個單一的方法,管理員用戶

+0

不,它不。你需要開始一個新的過程來提升。 –

+0

這標誌着一種方法需要提升,所以你可以做聰明的東西,但它實際上並沒有提升。最大的Windows安全改進之一是停止進程中的升級,這是所有壞人都在使用的。 –

1

好了開始,運行應用程序的用戶應該能夠以自己的桌面上創建一個文件夾。

如果以上的情況下襬脫的東西,你把在清單中,但不使用硬編碼路徑

String desktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); 

Directory.Delete(Path.Combine(desktopFolder,"proto"); 

如果此文件夾被刪除另一其他用戶(和管理員是另一個用戶,是否升高或降低),那麼你必須一直運行(不是一個好主意),或者當你用提升的權利啓動另一個進程來完成升級的任務時。

+0

我實際上在我的代碼中使用了「Environment.SpecialFolder.DesktopDirectory」。爲了可讀性,我只是將其留給了我的問題。 – JimDel

+0

必須是你沒有提到的其他東西.....然後你可以大概刪除你的桌面上的文件夾,如右鍵單擊 - >刪除? –

+0

是的,工作... – JimDel

相關問題