2011-02-09 4 views
0

IIS에서 호스팅되는 ASP.NET 사이트에서 클라이언트 컴퓨터의 실행 파일을 열 수 있습니까?ASP.NET 사이트에서 .EXE 파일을 열려면 어떻게해야합니까?

나는 ASP.NET에서 다음 코드를 사용하여 시도 : 다음 코드와 자바 스크립트도

Process notePad = new Process(); 

notePad.StartInfo.FileName = "notepad.exe"; 
notePad.StartInfo.Arguments = @"E:\abc.txt"; 

notePad.StartInfo.CreateNoWindow = false; 
notePad.StartInfo.UseShellExecute = false; 
notePad.StartInfo.RedirectStandardOutput = false; 

notePad.Start(); 

과 :

function Launch() { 
    var w = new ActiveXObject("WScript.Shell"); 
    w.run('notepad.exe'); 
    return true; 
} 

그러나 두 조각은 경우에만 사이트 파일을 엽니 다 IIS에서 호스팅되지 않습니다.

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

+1

왜이 작업을 수행하고 싶습니까?응용 프로그램과 보안에 대한 존중이 심각하게 깨지는 이유는 이것이 허용 가능한 옵션이라고 생각하면됩니다. –

+0

나는 이것을하지 말아야한다는 코디에 동의한다. 그러나 나는 또한 많은 환경에서 사용자 (주로 기업 사용자)가 이러한 일을 좋아한다는 것을 이해합니다. 그래도 응답 스트림을 사용하여 파일 데이터를 전송하고 운영 체제 (예 : Windows)가 모든 파일을 처리 할 수있는 올바른 프로그램과 연결하도록 허용해야합니다. – bitxwise

+0

실제로 그것은 요구 사항에 따라, 내가주었습니다. 나는 정말로 그것이 가능한지 아닌지 (보안 문제를 무시하는 것) 알고 싶다. 또한 실행 파일이 공유 드라이브에있는 경우 한 점을 가지면 가능합니까? 나는 그렇게 생각하지 않는다. –

답변

2
당신은 하지 ... 거의 어떤 상황에서 (컴퓨터가 브라우저를 실행) 클라이언트에서 실행을 시작할 수

는 는 서버에 사는 C 번호에

코드는 보이는 것

하는 실제로 서버에서 Notepad 인스턴스를 열면 Notepad를 실행하려고 시도하는 것처럼 ... 클라이언트가 아닙니다.

클라이언트가 메모장 (큰 if)을 실행할 수있는 권한을 부여하도록 관리했다면 컴퓨터가 Windows PC가 아닌 경우 (예 : 메모장이없는 경우) 무언가를 보여주고 싶을 것입니다. 첫 번째 장소)

+0

내가 말하기는하지만 충분한 보안 설정을 선택 취소하고 각 클라이언트 컴퓨터의 신뢰할 수있는 출처에 충분한 참조를 추가하면 메모장을 열 수 있습니다. – davidsleeps

+1

하지만 제발하지 마십시오. 웹 응용 프로그램과 데스크톱 응용 프로그램에는 이유가 있습니다. –

+0

나는 모든 가능한 방법으로 실용적이지는 않지만 기술적으로 가능하다는 것을 암시하려고 노력했다. (기술적으로) ... – davidsleeps

1

당신은 IE 사용자를위한 자바 스크립트하지만이 단지 작품을 사용하여 시도 할 수 있습니다 :

<html> 
<head runat="server"> 
    <title>Run Executable HTA</title> 

    <script language="javascript" type="text/javascript"> 
    function RunEXE(prog) 
    { 
     var oShell = new ActiveXObject("WScript.Shell"); 
     oShell.Run('"'+prog+'"', 1); 
    } 
    </script> 
</head> 
<body> 
    <input id="btnMyButton" onClick="RunEXE('notepad.exe')" type="button" value="Notepad" /> 
</body> 
</html> 

편집

하드 코딩 제거 영업 이익으로

편집

업데이트 대답은 Design.exe를 사용하려고합니다.

내가 말했듯이, 나는 이것을하지 않는 것이 좋지만 요구 사항이므로 우리가 할 수있는 일을 보자. Design.exe 파일을로드하려고 시도하는 대신 Design.exe 파일에 고유 한 파일 확장자 (예 : .txt, .des)가 있다고 가정하면 응답 스트림을 사용하여 파일을 전송할 수 있습니다. 사용자가 다운로드를 열면 Windows (해당 OS라고 가정)가 자동으로 Design.exe를 사용하여 파일을 엽니 다.

+1

** 참고로 할 수있는 길을 모색하지 마라. ** –

+0

진지하게, 그것은 개념의 예다. – bitxwise

+1

그래, 그것은 일반적으로 반복되는, 실수이지만 개념의 예입니다. 예를 들어 다른 개발자가 같은 실수를 저 지르도록 권장하는 것입니다. 대부분의 사람들이 온라인에서 찾은 코드를 복사하여 붙여 넣는 것은 슬픈 현실입니다. 이와 같은 예는 커뮤니티에 유익하지도 좋지도 않습니다. –

0

절대적으로이 작업을 수행해야하는 경우, 나는 그렇게하지 제안 ...

옵션 1 :
만 IE를 지원해야하는 경우, 하나의 옵션이있는 작은 ActiveX 컨트롤을 구축하는 것입니다 버튼을 클릭하여 원하는 프로그램을 선택하고 웹 페이지에 삽입합니다.

옵션 2 :
당신이 design.exe 무엇이든에서 특정 파일을 열려고하고, 사용자는 단지를 넣을 수 있습니다 당신은 자신의 시스템에서 해당 응용 프로그램에 등록 열려는 파일 형식이있는 경우 웹 페이지에서 적절한 확장명을 가진 파일에 링크하면 해당 파일과 함께 응용 프로그램이 열립니다.

+0

옵션 2를 시도했을 수 있습니다. 사이트 구성에서 파일 확장명을 추가했습니다. 그러나 응용 프로그램의 창을 시작하지는 않습니다. 프로세스는 백그라운드에서 실행됩니다 (작업 관리자에 표시). –

+0

웹 사이트 작동 방식을 읽는 것이 도움이 될 것이라고 생각합니다. 웹 서버에서 변경 한 내용은 클라이언트의 동작에 영향을 미치지 않습니다. 파일 유형이 USER 'S (클라이언트) 시스템에 등록되어 있는지 확인해야합니다. 서버가 아닙니다. – JohnFx

+0

그래, 나는 그것을 알았다. 그러나 나는 그것을 시험해 보았다. 옵션 1의 경우 ActiveX에서 실행 파일에 대한 참조를 추가하면 직접 응용 프로그램이 시작됩니까? –

관련 문제