2012-04-30 4 views
0

응용 프로그램에서 지정된 작업에서 대상 파일을 제거하도록하고 싶습니다. 그때 나는 내 자신의 워크 스테이션과 다른 테스트 시스템 모두에 \ 온도 \의 TEMP.TXT 파일을 만든UNC 경로에서 파일을 삭제할 수 없습니다.

string strTarget = @"\\" + textBox1.Text + @"\C$\Temp\temp.txt"; 

      try 
      { 
       File.Delete(strTarget); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Failure to delete: " + ex.Message); 
      } 

: 대상 시스템에 관리자가 될 것입니다 소프트웨어를 실행하는 사용자는 그래서 테스트를 위해 다음과 같은 코드를 사용 . 나는 두 컴퓨터의 관리자이고 문제의 UNC 경로를 통해 파일을 수동으로 액세스하고 삭제할 수 있습니다. 코드 디버거를 실행하면 예외는 발생하지 않지만 파일은 삭제되지 않습니다. 이 일이 실패하지 않는 이유를 알 수는 없습니다.

확인할 사항이나 추가 할 코드가 있습니까? 나는 다른 질문에 대한 검색을했지만, 아직 대답을 찾을 수 없었습니다.

답변

1

Vista/7에서 실행중인 경우 프로그램이 비상용 권한으로 실행 중일 수 있습니다. 관리자로 프로그램을 명시 적으로 실행하거나 프로젝트 매니페스트 파일에 명시 적으로 지정했는지 확인하십시오.

<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <!-- 
     UAC Manifest Options 
     If you want to change the Windows User Account Control level replace the 
     requestedExecutionLevel node with one of the following. 

    <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
    <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

    If you want to utilize File and Registry Virtualization for backward 
    compatibility then delete the requestedExecutionLevel node. 
--> 
    <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 
    </requestedPrivileges> 
+0

관리자로 파일을 실행했지만 변경 사항이 없습니다. 내 AD 계정은 두 컴퓨터의 관리자입니다. 이벤트 뷰어를 확인했지만 내 워크 스테이션 로그인/로그 아웃 외부에 어떤 신임 이벤트도 표시되지 않습니다. 내 응용 프로그램 사용과 관련된 이벤트를 볼 수 있습니까? – ChargerIIC

+0

필자는 간단한 한 줄 프로그램 인'File.Delete (@ "\\ foo \ c $ \ temp \ temp.txt");'(여기서 foo는 내 컴퓨터 이름으로 바뀌 었습니다) temp.txt 파일 아무 문제없이 만들었습니다. 텍스트 입력이 맞습니까? Microsoft에 따르면 File.Delete()는 파일을 찾을 수 없으면 예외를 throw하지 않습니다. – itsme86

+0

더 많은 테스트가 끝나면 대상 이름을 소문자로 사용하면 네트워크 경로에 '액세스 거부'오류가 반환되는 것 같습니다. 내 사용자 계정에는 경로에 대한 관리자 권한이 있으므로 해당 권한을 프로그램에 전달하는 방법을 알아야합니다. 맞습니까? – ChargerIIC

관련 문제