2010-07-16 1 views
0

asp.net 페이지에서 일부 코드를 실행 한 후 SDelete를 사용하고 싶습니다. SDelete는 명령 줄 도구입니다. 내 특정 질문은 누구든지 asp.net 페이지에서이 SDelete 실행할 수 있습니다? 더 일반적인 질문은 어떻게 asp.net 페이지에서 명령 줄 유틸리티를 실행합니까?asp.net 페이지에서 SDelete를 호출했습니다.

감사

답변

1

당신은 내가 마지막에 나올 때까지 기다리는 것이, asp.net에 가까운 Process Class

Process myProcess = new Process(); 

myProcess.StartInfo.UseShellExecute = false; 
// You can start any process, HelloWorld is a do-nothing example. 
myProcess.StartInfo.FileName = "C:\\HelloWorld.exe"; 
myProcess.StartInfo.CreateNoWindow = true; 
myProcess.Start(); 

하나 더 예를 사용하여 명령 행 유틸리티를 실행하고 출력을 읽을 수 있습니다.

 Process compiler = new Process(); 

     compiler.StartInfo.FileName = "c:\\hello.exe"; 

     compiler.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8; 

     compiler.StartInfo.UseShellExecute = false; 
     compiler.StartInfo.CreateNoWindow = false; 

     compiler.StartInfo.RedirectStandardError = true; 
     compiler.StartInfo.RedirectStandardOutput = true; 
     compiler.StartInfo.RedirectStandardInput = true; 

     // here I run it 
     compiler.Start(); 

     compiler.StandardInput.Flush(); 
     compiler.StandardInput.Close(); 

     // here I get the output 
     string cReadOutput = compiler.StandardOutput.ReadToEnd(); 

     compiler.WaitForExit(); 
     compiler.Close(); 
1

아리스 토스 '대답은 사용자 privs 및 순서와 EULA가 인정하는 시스 인 터널에있는 경우에 작동합니다. 즉, SysInternals의 sdelete.exe 유틸리티는 IIS에 할당 된 Asp.Net 계정으로 실행됩니다. 해당 계정에 적절한 사용 권한이없고 팝업 EULA를 수락하지 않은 경우 파일이 삭제되지 않습니다. 바로 지금 바로 그 문제에 직면하고 있습니다.

프로세스를 실행하는 데 사용되는 도메인/사용자/암호를 지정할 수 있습니다. 그 내용은 다음과 같습니다. http://social.msdn.microsoft.com/Forums/hu-HU/netfxbcl/thread/70b2419e-cb1a-4678-b2ae-cedcfe08d06f 해당 스레드의 작성자는 비슷한 문제가있어서 sdelete.exe 파일의 소유권을 변경하여 해결했습니다.

이 스레드는 또한 시스 인 터널의 EULA를 프로세스를 실행하는 데 사용되는 사용자로 로그인 및 수용에 대한 몇 가지 정보를 가지고 : 당신이 사용하려는 경우 그이 가능하지 않을 그러나 sdelete.exe is not working with cfexecute

을 내장 ASP를. 해당 사용자 계정은 일반 로그인을 허용하지 않기 때문에 Net 시스템 계정. 내가 로그인하여 EULA를 수락 할 수있는 별도의 사용자를 만든 다음 해당 자격 증명을 지정하여 프로세스를 실행할 수 있습니다. 내 경우에는 불행하지만 프로덕션 서버에서 사용자를 생성 할 수있는 옵션이 없을 수도 있습니다.

명령 줄 매개 변수 또는 간단한 레지스트리 항목을 사용하여 EULA 허용을 강제 적용하는 방법이 있습니다. 그러나 나는 그것이 "일반"사용자들에게만 효과가 있다고 생각한다.