2015-01-29 1 views
-1

프로그래밍 방식으로 Windows 캐시에서 네트워크 공유의 저장된 자격 증명을 제거해야합니다. 검색했지만 솔루션을 찾을 수 없습니다. 하지만 명령 프롬프트에서 다음 명령문을 실행하여이 문제를 해결했습니다.C#을 사용하여 Windows 캐시에서 네트워크의 저장된 자격 증명을 지우는 cmd 문을 실행하는 방법?

net use \\someloaction /del 

이제는 asp.net C#을 사용하여 cmd 문을 실행해야합니다.

다음 코드를 시도했습니다. 그러나 그것은 작동하지 않습니다.

var startInfo = new ProcessStartInfo 
     { 
      FileName = "cmd.exe", 
      RedirectStandardInput = true, 
      RedirectStandardOutput = true, 
      UseShellExecute = false, 
      CreateNoWindow = true 
     }; 

     var process = new Process { StartInfo = startInfo }; 

     process.Start(); 
     process.StandardInput.WriteLine("net use \somelocation /del"); 
     process.StandardInput.WriteLine("exit"); 

     process.WaitForExit(); 

답변

0

ProcessStartInfo 클래스의 Arguments 속성을 사용해야합니다. /C 플래그는 실행을 위해 인수를 셸 명령 프로세서로 전달하는 역할을하지만, 그렇지 않으면 즉시 닫힙니다.

var startInfo = new ProcessStartInfo 
{ 
    FileName = "cmd.exe", 
    Arguments = @"/C net use \\somelocation /del", 
    UseShellExecute = false, 
    CreateNoWindow = true 
}; 

그러나 NET USE ..../D 명령은 사용자가 네트워크 공유에 액세스하기 위해 저장된 CREDENTIALS를 제거하지 않습니다. 자격 증명을 제거해야하는 경우 다음 번에 공유 리소스를 사용하려고 할 때 사용자가 자격 증명 관리자로 작업해야 할 때 다시 삽입해야합니다.

문제는이 라이브러리에 공식 관리 구현 (AFAIK)이 없다는 것입니다. 그래서 당신은 당신이 download from here 또는 이전 NET USE 명령을 사용하여 공유를 제거한 후, Install-Package CredentialManagement

그래서 NuGet 명령으로 설치 사용할 수있는 플러그인 라이브러리를 사용해야합니다, 당신은이

같은 코드 뭔가에 쓸 수
Credential cm = new Credential(@"\\server\share","", @"server"); 
cm.Delete(); 
당신은에 대한 또 다른 질문을 찾을 수

at this link
(이 라이브러리를 시도하고 난. 내가 같은 귀하의 측면에서 발생 희망 명령 프롬프트를 사용하여 내 LAN의 공유 네트워크에 액세스 자격 증명을 취소 할 수 있어요)

+0

그래서 p rocess.Start(); 나는 무엇을해야만 하는가? – Nachikethas

+0

나는 절차를 시작하고 그것을 끝냈다. 그러나 아직도 그것은 개간되지 않았다. 또한 WorkingDirectory = "C : \\ Documents and Settings \\ myloginname"을 제공하려고 시도했습니다. 그러나 사용하지 마십시오. – Nachikethas

+0

질문을 다시 읽으면 삭제할 내용이 명확하지 않습니다. 'net use' 명령은 컴퓨터를 공유 자원과 연결하거나 연결을 끊습니다. 그것은 CREDENTIALS 삭제와 아무런 관련이 없습니다 – Steve

관련 문제