0

ネットワーク上の別のコンピューターにメッセージを表示しようとしています.Windows 7には存在しないためnet sendを使用できません.MSGは無効になっているため使用できません.有効にするとGPOが無効になります. そのため、ユーザーのコンピューターにメッセージを表示する vbscript と、表示するメッセージを送信する別の vbscript があります。このコードを使用してメッセージを通常のvbscriptとして送信すると、機能します

Dim strMessage, strComputer, strLocalPath, strFile, objShell 
Dim strRemotePath, objShellApp, strTest, sPSEXEC
strComputer = InputBox("enter computer Name", "create File")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & 
strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
Set objShell = CreateObject("WScript.Shell")
Set objShellApp = CreateObject("Shell.Application")
currentpath = objShell.CurrentDirectory & "\"
sPSEXEC = currentPath & "psexec.exe"
strFile = """c:\windows\notification.vbs"""
strMessage = InputBox("enter Message", "create File")
strTest = "\\"&strComputer&" " &"cscript.exe"&" "&strFile&" 
"&"/message:"&Chr(34)&strMessage&Chr(34)
WScript.Echo strTest
objShellApp.ShellExecute "cmd.exe","/k "&sPSEXEC&" -s -i -d "&" "&strTest, "","runas",1

しかし、同じコードを hta に配置して、ユーザーのコンピューターでスクリプトを開こうとしますが、メッセージを表示する前に終了します

<script Language = VBScript>
On Error Resume Next
Sub WindowsLoad
Dim strMessage, strComputer, strLocalPath, strFile, objShell
Dim strRemotePath, objShellApp, strTest, sPSEXEC    
strComputer = computerName.Value
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & 
_strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
Set objShell = CreateObject("WScript.Shell")
Set objShellAPP = CreateObject("Shell.Application")
currentpath = objShell.CurrentDirectory & "\"
sPSEXEC = currentPath & "psexec.exe"
strFile = """c:\windows\notification.vbs"""
strTest = "\\"&strComputer&" " &"cscript.exe"&" "&strFile&"   
_"&"/message:"&Chr(34)&strMessage&Chr(34)
objShellApp.ShellExecute "cmd.exe","/k "&sPSEXEC&" -s -i -d "&" "&strTest, "", 
_"runas", 1
End Sub
</script>
<Body>
<div>
</div>

Computer Name: <Input align="right" Type = "Text" Name = "computerName">
</br>
</br>
Message: 
</br>
<TEXTAREA NAME="Message" COLS=30 ROWS=6>

</TEXTAREA>
</br>
</br>
<Input Type = "Button" Value = "Send Message" Name = "Run_Button" onClick = "WindowsLoad"><P>

助けてください?

4

1 に答える 1

1

何よりもまず、グローバルOn Error Resume Nextはすべての悪の根源です。何をしているのか、また発生する可能性のあるエラーをどのように処理するのかを正確に理解していない限り、これを使用しないでください

とはいえ、HTA の VBScript コードが無効であるため、スクリプトはおそらく停止します。行継続を使用する場合、アンダースコアは、継続する行の先頭ではなく、継続する行の末尾にある必要があります。

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & 
_strComputer & "\root\cimv2")

また、文字列内で行継続を使用することはできません:

strTest = "\\"&strComputer&" " &"cscript.exe"&" "&strFile&"   
_"&"/message:"&Chr(34)&strMessage&Chr(34)
于 2013-03-20T20:37:12.723 に答える