본문 바로가기
프로그래밍/ASP

[본문스크랩] exe, vbs 파일등을 실행 시키는 WMI 메소드

by 백룡화검 2010. 4. 23.
서버에서 프로그램을 실행해야 하는 경우 유용하게 쓰일것 같네요...
로컬 (IIS와 같은 컴퓨터)에서는 예전에 Han님이 소개해 주신 HanWSC.Object 를
사용해야 합니다. 아래링크를 참조하시길...


1.exec.asp 파일을 만든다.
2. c:\ 에 makefolder.vbs 폴더를 만든다.


윈도우 작업관리자로 확인하면 프로그램 실행여부를 알수 있습니다.


--------1. exec.asp -------------


<%
 Dim ProcID


 bClose = Request("bClose")
 uip = Request("uip")
 uid = Request("uid")
 upw = Request("upw")
 cmd = Request("cmd")


 if Len(cmd) > 0 then
  call ExecProgram()
 end if


 if bClose = "1" then
  call TerminateProgram(ProcID)
 end if


function GetLoc()
 NSpace = "root\CIMV2"


 Set oLoc = CreateObject("WbemScripting.SWbemLocator")
 Set wn = CreateObject("WScript.NetWork")
  sn = wn.ComputerName
 Set wn = Nothing
 if (uip="") or (uid="") or (upw="") then
  Set oh = CreateObject("HanWSC.Object")
  Set oSvc = oh.GetHObject("winmgmts:\\" & sn & "\" & NSpace)
  Set oh = Nothing
 else
  Set oSvc = oLoc.ConnectServer(uip,NSpace,uid,upw)
 end if
 Set GetLoc = oSvc
end function


sub ExecProgram()
  Set obj = GetLoc()
  Set oProc = obj.Get("Win32_Process")
  rs = oProc.Create(cmd,null,ot,ProcID)
  Set oProc = Nothing
  Set obj = Nothing
end sub


sub TerminateProgram(p_id)
 Set obj = GetLoc()


 Set p = obj.ExecQuery("Select * from " _
 & " Win32_Process where ProcessId='" & p_id & "'")


 if (p.count) > 0 then
  for each t1 in p
   iv = t1.Terminate(0)
  next
 end if
 Set p = Nothing
 Set obj = Nothing
end sub


if Len(ProcID) > 0 then Response.write ProcID & "<br>"


%>


<html>


<head>
<script language="javascript">
function chgSel(){
 var frm = document.form1;
 var sel = document.form1.selCmd;
 var idx = sel.selectedIndex;
 frm.cmd.value = sel.options[idx].value;

 

}


</script>
</head>

<body>


<form name="form1" method="post">


<input type="checkbox" value="1" name="bClose">실행후 프로그램 종료
<br><br>
<select name="selCmd" onchange="chgSel();">
<option value="">명령 선택</option>
<option value="calc.exe">calc.exe</option>
<option value="wscript c:\makefolder.vbs">makefolder.vbs</option>
<option value="notepad.exe">notepad.exe</option>
</select>


명령줄 : <input type="test" name="cmd" size="50">
<br><br>
<hr>
<br><br>
다른 컴퓨터에는 아래의 값을 모두 입력 <br><br>
IP Addr : <input type="text" name="uip"><br>
User ID :<input type="text" name="uid" value="Administrator"><br>
User PW : <input type="text" name="upw"><br>


<br><br>
<input type="submit" value="실행">


</form>


</body>


</html>


-------- 2.makefolder.vbs ----------------


Set fso = CreateObject("Scripting.FileSystemObject")


 Set f = fso.CreateFolder("c:\aspnewsgroup")
 Set f = Nothing


Set fso = Nothing