2012-09-23 2 views
2

디스크에 새 XML 파일을 쓰려고하지만 다음 코드는 오류를 발생시킵니다.C# XmlWriter.Create() - 거부 된 경로에 대한 액세스

static void Main(string[] args) 
     { 
      using (XmlWriter writer = XmlWriter.Create(@"C:\abc.xml")) 
      { 
       writer.WriteStartDocument(); 
       writer.WriteStartElement("Employees"); 
       writer.WriteEndElement(); 
       writer.WriteEndDocument(); 
      }    

      Console.ReadKey();  
     } 

아무도 도와 줄 수 있습니까?

참고 : abc.xml은 아직 존재하지 않습니다.

+0

경로에 대한 액세스가 거부되었습니다. 왜냐하면 내 PC에서 "필요한 권한은 클라이언트가 보유하지 않습니다." 오류. –

답변

3

분명히에는 C:에 액세스 할 권한이 없습니다. 액세스 권한이있는 경로를 선택하거나 높은 권한으로 애플리케이션을 실행하십시오. 보조 노트로

는, 대부분의 경우, 대신, 더 이상 System.Xml를 사용하여 XML ( System.Xml.Linq)에 LINQ를 사용하지 않는 것이 좋습니다 :

new XElement("Employees").Save("abc.xml"); // and a path that you have access to. 
2

시스템에 따라 관리자 권한 파일을 작성해야합니다 @ C :

실행 VS instante \ 관리자 또는 변경 코드로

using (XmlWriter writer = XmlWriter.Create("abc.xml")) 
     { 
      writer.WriteStartDocument(); 
      writer.WriteStartElement("Employees"); 
      writer.WriteEndElement(); 
      writer.WriteEndDocument(); 
     } 
+0

위의 코드를 설명하기 만하면이 경우 "abc.xml"파일이 YourProgram.exe (bin/Debug 또는 bin/Release)와 동일한 디렉토리에 생성되며 VS –

1

에 당신은 C:\에 파일을 쓸 수 없습니다 관리자 모드없이 VS에서. C:\에 파일을 쓰려면 관리 모드에서 응용 프로그램/VS를 실행해야합니다. 또는 C:\에 하나의 폴더를 만들고 해당 폴더에 파일을 쓸 수 있습니다.

위의 코드에서 코드

using (XmlWriter writer = XmlWriter.Create(@"C:\folder\abc.xml")) 
{ 
      writer.WriteStartDocument(); 
      writer.WriteStartElement("Employees"); 
      writer.WriteEndElement(); 
      writer.WriteEndDocument(); 
    } 

당신은 관리자 모드에서 응용 프로그램/VS를 실행하는 데 필요하지 않습니다.

참고 : C : \ 폴더가 있어야합니다. 그렇지 않으면 오류가 발생합니다.

C:\folder가없는 경우 파일을 작성하기 전에 아래 코드를 추가하십시오.

if (System.IO.Directory.Exists(@"C:\folder") == false) 
{ 
    System.IO.Directory.CreateDirectory(@"C:\folder"); 
} 
+0

을 실행하는 사용자가 쓸 수 있습니다 사실이 아닙니다 : 관리자 권한이 없으면 위의 코드가 작동하지 않습니다. – Adam

+0

내 PC에서 작동 중입니다. 먼저 옆에서 확인하십시오. –

+0

당신의 코드는'folder'가 이미 존재할 때만 작동합니다, 그렇지 않습니다 ... 나는 주석을 달기 전에 시도했습니다. – Adam

관련 문제