none
Ajuda Script HTA RRS feed

  • Pergunta

  • Boa noite, estou fazendo um script com base em um script de exemplo que o Jesiel me passou e o mesmo apresenta o seguinte erro:

    Linha: 54
    Erro: Objeto necessário: 'WScript'

    O script tenta alterar o registro do windows para desativar o rdpclip em um servidor de TS, se eu faço com um arquivo .vbs ele faz certinho, gostaria de fazer o mesmo funciona em hta.

    Abaixo o script hta:

    <html>
    <head>
    <title>teste</title>
    <HTA:APPLICATION
         ID="TUNING"
         APPLICATIONNAME="teste"
         SingleInstance="Yes"
         WindowsState="Normal"
         Scroll="No"
         Navigable="Yes"
         MaximizeButton="No"
         SysMenu="Yes"
         Caption="Yes"
    >
    </head>

    <SCRIPT LANGUAGE="VBScript">

    Sub Window_Onload
    'CONFIGURACOES DA TELA
    '# Size Window
    sHorizontal = 450
    sVertical = 250
    Window.resizeTo sHorizontal, sVertical
    '# Get Monitor Details
    Set objWMIService = GetObject _
    ("winmgmts:root\cimv2")
    intHorizontal = sHorizontal *2
    intVertical = sVertical *2
    Set colItems = objWMIService.ExecQuery( _
    "Select ScreenWidth, ScreenHeight from" _
    & " Win32_DesktopMonitor", , 48)
    For Each objItem In colItems
    sWidth= objItem.ScreenWidth
    sHeight = objItem.ScreenHeight
    If sWidth > sHorizontal _
    then intHorizontal = sWidth
    If sHeight > sVertical _
    then intVertical = sHeight
    Next
    Set objWMIService = Nothing
    '# Center window on the screen
    intLeft = (intHorizontal - sHorizontal) /2
    intTop = (intVertical - sVertical) /2
    Window.moveTo intLeft, intTop
    '# default window content
    window.location.href="#Top"
    End Sub

    Sub Executar


            If Checkbox1.Checked Then
     Set WSHShell = WScript.CreateObject("WScript.Shell")
     WSHShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\StartupPrograms", "" ,"REG_SZ"
            Msgbox "Rdplicp desativado"
            End If
    End Sub

    Sub Limpar

     If Checkbox1.checked = true then
        Checkbox1.checked = false
     End If
    End Sub


    Sub Selecionar_Todos
     If Checkbox1.checked = false then
        Checkbox1.checked = true
     End If
    End Sub


    Sub Cancelar

    Set oShell = Nothing
    Set objNetwork = Nothing
    Self.Close()

    End sub

    </SCRIPT>

    <BODY STYLE="font:14 pt arial; color:white; filter:progid:DXImageTransform.Microsoft.Gradient( GradientType=1, StartColorStr='#000000', EndColorStr='#0000FF')">
    Teste registro<br>
    <br>
    <a name="Top"></a><LEFT>
    <input type="checkbox" name="Checkbox1"> Desativar Rdpclip <br>

    <br>
    <br>
        <input id=runbutton  class="button" type="button" value="Executar" name="executar"  onClick="Executar">
        <input id=runbutton  class="button" type="button" value="Cancelar" name="Cancelar"  onClick="Cancelar">
        <input id=runbutton  class="button" type="button" value="Limpar" name="Limpar"  onClick="Limpar">
        <input id=runbutton  class="button" type="button" value="Selecionar Todos" name="Selecionar_todos"  onClick="Selecionar_Todos">

    </left>
    </body>



    Desde já agradeço a atenção de todos.

    quarta-feira, 23 de setembro de 2009 02:11

Respostas

  • Olá,

    O shell tem algumas limitações para o HTA.

    Recomendo fazer as alterações por wmi.

    Verifique o script abaixo:


    <html>
    <head>
    <title>teste</title>
    <HTA:APPLICATION
         ID="TUNING"
         APPLICATIONNAME="teste"
         SingleInstance="Yes"
         WindowsState="Normal"
         Scroll="No"
         Navigable="Yes"
         MaximizeButton="No"
         SysMenu="Yes"
         Caption="Yes"
    >
    </head>

    <SCRIPT LANGUAGE="VBScript">

    Sub Window_Onload
    'CONFIGURACOES DA TELA
    '# Size Window
    sHorizontal = 450
    sVertical = 250
    Window.resizeTo sHorizontal, sVertical
    '# Get Monitor Details
    Set objWMIService = GetObject _
    ("winmgmts:root\cimv2")
    intHorizontal = sHorizontal *2
    intVertical = sVertical *2
    Set colItems = objWMIService.ExecQuery( _
    "Select ScreenWidth, ScreenHeight from" _
    & " Win32_DesktopMonitor", , 48)
    For Each objItem In colItems
    sWidth= objItem.ScreenWidth
    sHeight = objItem.ScreenHeight
    If sWidth > sHorizontal _
    then intHorizontal = sWidth
    If sHeight > sVertical _
    then intVertical = sHeight
    Next
    Set objWMIService = Nothing
    '# Center window on the screen
    intLeft = (intHorizontal - sHorizontal) /2
    intTop = (intVertical - sVertical) /2
    Window.moveTo intLeft, intTop
    '# default window content
    window.location.href="#Top"
    End Sub

    Sub Executar


    if Checkbox1.Checked Then

       Const HKEY_CURRENT_USER = &H80000002

       strComputer = "."
     
       Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
     
       strChave = "SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\"
       strValor = "StartupPrograms"
       dwValue = "rdpclip"
       objRegistry.SetStringValue HKEY_CURRENT_USER, strChave, strValor, dwValue

       Msgbox "Rdplicp desativado"
    End If
    End Sub

    Sub Limpar

     If Checkbox1.checked = true then
        Checkbox1.checked = false
     End If
    End Sub


    Sub Selecionar_Todos
     If Checkbox1.checked = false then
        Checkbox1.checked = true
     End If
    End Sub


    Sub Cancelar

    Set oShell = Nothing
    Set objNetwork = Nothing
    Self.Close()

    End sub

    </SCRIPT>

    <BODY STYLE="font:14 pt arial; color:white; filter:progid:DXImageTransform.Microsoft.Gradient( GradientType=1, StartColorStr='#000000', EndColorStr='#0000FF')">
    Teste registro<br>
    <br>
    <a name="Top"></a><LEFT>
    <input type="checkbox" name="Checkbox1"> Desativar Rdpclip <br>

    <br>
    <br>
        <input id=runbutton  class="button" type="button" value="Executar" name="executar"  onClick="Executar">
        <input id=runbutton  class="button" type="button" value="Cancelar" name="Cancelar"  onClick="Cancelar">
        <input id=runbutton  class="button" type="button" value="Limpar" name="Limpar"  onClick="Limpar">
        <input id=runbutton  class="button" type="button" value="Selecionar Todos" name="Selecionar_todos"  onClick="Selecionar_Todos">

    </left>
    </body>



    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    quarta-feira, 23 de setembro de 2009 16:59
  • Olá,

      Const HKEY_CURRENT_USER = &H80000002

       strComputer = "."
     
       Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
       strChave = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\"
       strValor = "MaxUserPort"
       dwValue = 65534
       objRegistry.SetDWORDValue HKEY_CURRENT_USER, strChave, strValor, dwValue


       Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
       strChave = "SOFTWARE\Policies\Microsoft\Windows\System\"
       strValor = "LocalProfile"
       dwValue = 00000001
       objRegistry.SetDWORDValue HKEY_CURRENT_USER, strChave, strValor, dwValue





    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    sexta-feira, 25 de setembro de 2009 16:13

Todas as Respostas

  • Olá,

    O shell tem algumas limitações para o HTA.

    Recomendo fazer as alterações por wmi.

    Verifique o script abaixo:


    <html>
    <head>
    <title>teste</title>
    <HTA:APPLICATION
         ID="TUNING"
         APPLICATIONNAME="teste"
         SingleInstance="Yes"
         WindowsState="Normal"
         Scroll="No"
         Navigable="Yes"
         MaximizeButton="No"
         SysMenu="Yes"
         Caption="Yes"
    >
    </head>

    <SCRIPT LANGUAGE="VBScript">

    Sub Window_Onload
    'CONFIGURACOES DA TELA
    '# Size Window
    sHorizontal = 450
    sVertical = 250
    Window.resizeTo sHorizontal, sVertical
    '# Get Monitor Details
    Set objWMIService = GetObject _
    ("winmgmts:root\cimv2")
    intHorizontal = sHorizontal *2
    intVertical = sVertical *2
    Set colItems = objWMIService.ExecQuery( _
    "Select ScreenWidth, ScreenHeight from" _
    & " Win32_DesktopMonitor", , 48)
    For Each objItem In colItems
    sWidth= objItem.ScreenWidth
    sHeight = objItem.ScreenHeight
    If sWidth > sHorizontal _
    then intHorizontal = sWidth
    If sHeight > sVertical _
    then intVertical = sHeight
    Next
    Set objWMIService = Nothing
    '# Center window on the screen
    intLeft = (intHorizontal - sHorizontal) /2
    intTop = (intVertical - sVertical) /2
    Window.moveTo intLeft, intTop
    '# default window content
    window.location.href="#Top"
    End Sub

    Sub Executar


    if Checkbox1.Checked Then

       Const HKEY_CURRENT_USER = &H80000002

       strComputer = "."
     
       Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
     
       strChave = "SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\"
       strValor = "StartupPrograms"
       dwValue = "rdpclip"
       objRegistry.SetStringValue HKEY_CURRENT_USER, strChave, strValor, dwValue

       Msgbox "Rdplicp desativado"
    End If
    End Sub

    Sub Limpar

     If Checkbox1.checked = true then
        Checkbox1.checked = false
     End If
    End Sub


    Sub Selecionar_Todos
     If Checkbox1.checked = false then
        Checkbox1.checked = true
     End If
    End Sub


    Sub Cancelar

    Set oShell = Nothing
    Set objNetwork = Nothing
    Self.Close()

    End sub

    </SCRIPT>

    <BODY STYLE="font:14 pt arial; color:white; filter:progid:DXImageTransform.Microsoft.Gradient( GradientType=1, StartColorStr='#000000', EndColorStr='#0000FF')">
    Teste registro<br>
    <br>
    <a name="Top"></a><LEFT>
    <input type="checkbox" name="Checkbox1"> Desativar Rdpclip <br>

    <br>
    <br>
        <input id=runbutton  class="button" type="button" value="Executar" name="executar"  onClick="Executar">
        <input id=runbutton  class="button" type="button" value="Cancelar" name="Cancelar"  onClick="Cancelar">
        <input id=runbutton  class="button" type="button" value="Limpar" name="Limpar"  onClick="Limpar">
        <input id=runbutton  class="button" type="button" value="Selecionar Todos" name="Selecionar_todos"  onClick="Selecionar_Todos">

    </left>
    </body>



    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    quarta-feira, 23 de setembro de 2009 16:59
  • Jesiel e se eu precisar incluir esse dois registros como ficaria, usando wmi:

    Set WSHShell = WScript.CreateObject("WScript.Shell")
     WSHShell.Run "reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\System /v LocalProfile /t REG_DWORD /d 00000001 /f", 0

    Set WSHShell = WScript.CreateObject("WScript.Shell")
     WSHShell.Run "reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v MaxUserPort /t REG_DWORD /d 65534 /f", 0

    Desde já agradeço a atenção
    sexta-feira, 25 de setembro de 2009 15:59
  • Olá,

      Const HKEY_CURRENT_USER = &H80000002

       strComputer = "."
     
       Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
       strChave = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\"
       strValor = "MaxUserPort"
       dwValue = 65534
       objRegistry.SetDWORDValue HKEY_CURRENT_USER, strChave, strValor, dwValue


       Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
       strChave = "SOFTWARE\Policies\Microsoft\Windows\System\"
       strValor = "LocalProfile"
       dwValue = 00000001
       objRegistry.SetDWORDValue HKEY_CURRENT_USER, strChave, strValor, dwValue





    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    sexta-feira, 25 de setembro de 2009 16:13
  • Muito obrigado Jesiel!
    sexta-feira, 25 de setembro de 2009 16:14