2011-07-03 27 views
0
string windowsDirectory = Environment.GetEnvironmentVariable("ProgramFiles"); 
string mydirecoty = windowsDirectory + "\\" + "NetServices\\"; 

if (!Directory.Exists(mydirecoty)) 
    { 
    Directory.CreateDirectory(mydirecoty); //Access to the path 'C:\Program Files (x86)\NetServices\' is denied. 
    } 

當我運行沒有管理員帳戶的.net應用程序時,會引發異常。而如果我嘗試在其他C:\驅動器(如D:\)中創建目錄,則它運行良好。使用C創建目錄時拒絕訪問#

什麼是我想要在Program Files/ Windows文件夾中創建目錄的解決方案?

+1

這是一個基於Web的應用程序,Windows服務,可執行或計劃任務? – Kane

+0

請編輯您的問題與例外的細節,在您的代碼中,您至少應該圍繞代碼嘗試一下。它在Windows 7上運行嗎?您是否100%確定您是管理員,UAC是否被禁用?一般而言,除非您正在安裝應用程序,否則不應在該位置創建子文件夾,但通常由安裝人員完成。 –

+0

您可以強制您的應用程序以管理員身份運行:http://stackoverflow.com/questions/2818179/how-to-force-c-app-to-run-as-administrator-on-windows-7 –

回答

5

C:\program files文件夾是受保護(設計)在Vista和Windows 7(和Windows Server 2008/2008 R2) - 正常的用戶帳戶沒有任何權限在那裏創建目錄 - 這是一個系統文件夾。

要麼你需要爲管理運行 - 就有權即使在受保護的系統文件夾創建目錄 - 或者你受保護的系統文件夾內的其他地方,而不是創建目錄。第二種選擇將是推薦和首選的選擇。

0

您需要提升用戶權限,因爲它是Windows Vista/7中的一項功能。 以管理員身份運行將解決問題。

0

如果您的應用程序旨在由用戶運行,請寫入用戶的應用程序數據文件夾或臨時文件夾。您的應用程序應該安裝到Program Files目錄,並且可能使用Windows目錄中的一些文件,但它不應該寫入任何位置。 您可以輕鬆地從環境變量中獲取用戶的應用daa文件夾。

0

如果您從Web應用程序運行此應用程序,請確保應用程序池用戶具有該文件夾的ntfs權限。

0

如果您使用的操作系統高於Windows XP,那麼您將無法訪問C:\ PrpgramFiles保護,因爲讀取和寫入操作,除非AVII具有管理員權限的應用程序。

再見