2012-05-18 50 views
8

我知道這裏已經有很多東西了,並且已經嘗試了一些東西,但沒有修好它的運氣。訪問路徑****被拒絕

我有一個C#程序,已經構建了一個XML文檔,並試圖將它保存到MyDocuments文件夾中。當調用XMLDoc.Save函數時,我得到了以下異常。

訪問路徑 'C:\用戶\灰\文檔\ ConfigOutput' 被拒絕

我有視覺工作室以管理員身份運行。有關如何解決它的任何想法?

我已經嘗試保存到桌面上並保存到C:\文件夾中。

我使用Windows 7

運行生成的可執行文件也似乎沒有工作。

道歉的傢伙,似乎我是愚蠢的。我確實沒有向輸出路徑添加文件名。我不會刪除任何人通過這個陷阱完成的問題!感謝所有的幫助/評論。

+0

您是否嘗試過將其保存到C或其他的根夾?這可能是UAC和用戶文件夾的權限問題 - 這是在Win7或Vista上? – Charleh

+0

嘗試以管理員身份運行應用程序,而不是使用visual studio。 –

+1

你指定了什麼文件名? – Richard

回答

9

有幾個可能性:

  • ConfigOutput是一個文件夾
  • ConfigOutput是一個文件,是在使用中(打開)
  • 您尚未登錄,因爲用戶'Ash'

您通常不必以Admin身份運行以寫入您自己的Documents文件夾。

+5

配置輸出是一個文件夾..... ooops! – user589195

+1

在我的情況下,該文件是隻讀的。 – toddmo

1

請嘗試以管理員身份運行您的應用程序。

如果您想調試您的應用程序,請以管理員身份啓動Visual Studio。

要強制應用程序開始以管理員身份來看看這個線程: How do I force my .NET application to run as administrator?

附:檢查您的文件是否已被另一個FileStream或其他文件打開

1

我不知道這是否有所作爲,但您可能希望以相對而非絕對方式指定文件夾:Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)將爲您提供當前用戶文檔的路徑。檢查它是否與您提供的不同。

如果是這樣,您可能需要在其他用戶或管理員的指定下運行該應用程序。顯然,一個用戶不允許將文件保存到其他用戶的文檔文件夾中。

對於我來說,當我從Visual Studio調試我的應用程序時,文檔文件夾與我當前登錄並運行Visual Studio的用戶相同。

您可以先嚐試<requestedExecutionLevel level="asInvoker" uiAccess="true|false"/>,然後逐漸移至highestAvailablerequireAdministrator

另外,需要的權限,捕獲異常,並打印出來:

try { 
     FileIOPermission fileIOPermission = new FileIOPermission(FileIOPermissionAccess.AllAccess, myDocFolderFile); 
     fileIOPermission.Demand(); 
    } catch (SecurityException se) { 
     Debug.WriteLine(se.ToString()); 
    } 
4

您需要檢查並獲得許可,該目錄/文件你的寫作..對於 使用Security namesapce

var permissionSet = new PermissionSet(PermissionState.None);  
var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, pathToFolder); 
permissionSet.AddPermission(writePermission); 

if (permissionSet.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet)) 
{ 
    // do your stuff 
} 
else 
{ 
    // alternative stuff 
} 
2

它看起來像你不指定一個文件名,因此無法創建使用相同的名稱與現有目錄文件 - 所以試着改變你的路徑:

C:\用戶\灰\文檔\ ConfigOutput \ Out.xml