none
Script para copiar um arquivo para system das maquinas. RRS feed

  • Pergunta

  • Boa tarde!

    Estou enfrentando alguns problemas na hora de copiar um arquivo que esta no servidor para o c:\windows\system32. O velho problema de permissão.

    Já tentei este código que achei mais próximo do que eu preciso.

    Set objNetwork = CreateObject("Wscript.Network")
    strUserName    = objNetwork.UserName
    Set strFolder = CreateObject("Scripting.FileSystemObject")

    strOrigem = "\\fileserver\dll\MSINET.OCX"
    strCaminho =  "c:\windows\system32"

       copiaArquivo strOrigem,strCaminho

    Sub CopiaArquivo(origem,Destino)

    strFolder.CopyFile origem , destino , true

    End Sub

    Mas não adianta que não copia de jeito nenhum, já coloquei no logon da maquina e do usuário na gpo e nada.

    Alguém teria uma luz?
    Fernando da Costa
    segunda-feira, 26 de outubro de 2009 18:08

Respostas

  • Olá,

    Segue exemplo:

    Option explicit

    Dim oShell

    set oShell= Wscript.CreateObject("WScript.Shell")

    oShell.Run "runas /user:administrator@dominio.local ""\\script.vbs"""

    WScript.Sleep 100

    'deixe o caracter ~ depois da senha
    oShell.Sendkeys "senha~"

    Wscript.Quit


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quarta-feira, 28 de outubro de 2009 14:09
  • Bom dia!

    Pessoal, agradeço a todos pela ajuda segue como consegui resolver!

    Criei um script chamado "permissão" com o código do "Jesiel" e joguei na ou de logon de usuário.

    código:
    Option explicit

    Dim oShell

    set oShell= Wscript.CreateObject("WScript.Shell")

    oShell.Run "runas /user:administrator@suchynet ""\\fileserver\dll\teste.bat"""

    WScript.Sleep 100

    'deixe o ~"
    oShell.Sendkeys "xxxxxxxx~"

    Wscript.Quit


    Logo criei uma pasta compartilhada no meu servidor chamada DLL e dentro dela coloquei as ocx e as dll que quero copiar para a pasta system das maquinas.

    Dentro desta mesma pasta coloquei o meu arquivo bat.  Chamado  "teste.bat"

    Segue código:

    @ echo on


    xcopy \\fileserver\dll\MSINET.OCX c:\windows\system32 /s /e /y
    xcopy \\fileserver\dll\SmartFlexGrid.ocx c:\windows\system32 /s /e /y
    xcopy \\fileserver\dll\SmartFlexGrid.oca c:\windows\system32 /s /e /y

    regsvr32 /s SmartFlexGrid.ocx
    regsvr32 /s msinet.ocx


    Feito isto ele copiou os arquivos do meu servidor, jogou as dlls para a pasta system e registrou. Tudo com a permissão do administrador.


    Muito obrigado ao pessoal do foro pela força e desculpem a demora.



    Fernando da Costa
    sexta-feira, 13 de novembro de 2009 13:27

Todas as Respostas

  • Olá,

    Coloque o script em uma GPO de computador.

    Coloque em configuração de computador -> Configurações do windows -> Script.


    Link a gpo em uma OU onde estão os computadores.

    Assim ele irá utilizar a conta system (que tem permissão administrativa e consiguirá copiar o arquivo)


    Só verifique se terá permissão para acessar o compartilhamento assim. Talvez, terá que copiar para a maquina local e depois executar o script que copia para o c:\windows\system32



    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    segunda-feira, 26 de outubro de 2009 18:26
  • Jesiel, obrigado por responder,

    Seguinte, não funcionou, ja havia tentando e não copiou nada. Eu estou tentando jogar esta ocx no system32, não queria jogar na maquina pois são mais de 150 computadores e se for para colocar em um por um não precisarei do script.

    Fico no aguardo de uma solução para rodar o vbs como administrador logando como usuário.
    Fernando da Costa
    segunda-feira, 26 de outubro de 2009 18:43
  • Olá,

    Crie 2 scripts... um para copiar da rede para a maquina local e outro para mover da maquina local para o c:\windows....

    Acho que é o mais facil... você poderia tentar colocar o system em um grupo (em grupos restritos) mas acho que é mais fácil criar 2 scripts...

    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    segunda-feira, 26 de outubro de 2009 19:40
  • Jessiel, acho que entendi, vou fazer o teste, posso usar este mesmo script? ai eu duplico ele correto?

    obrigado.

    Fernando da Costa
    segunda-feira, 26 de outubro de 2009 19:57
  • Jesiel,

    criei 2 scrips veja a baixo:

    script 1

    Set objNetwork = CreateObject("Wscript.Network")
    strUserName    = objNetwork.UserName
    Set strFolder = CreateObject("Scripting.FileSystemObject")

    strOrigem = "\\fileserver\dll\MSINET.OCX"
    strCaminho =  "c:\compartilhado"

       copiaArquivo strOrigem,strCaminho

    Sub CopiaArquivo(origem,Destino)

    strFolder.CopyFile origem , destino , true

    End Sub

    script 2

    Set objNetwork = CreateObject("Wscript.Network")
    strUserName    = objNetwork.UserName
    Set strFolder = CreateObject("Scripting.FileSystemObject")

    strOrigem = "c:\compartilhado"
    strCaminho =  "c:\windows\system32"

       copiaArquivo strOrigem,strCaminho

    Sub CopiaArquivo(origem,Destino)

    strFolder.CopyFile origem , destino , true

    End Sub


    Não tem jeito!!! Será que existe algum BAT com o comando runas ?
    Fernando da Costa
    terça-feira, 27 de outubro de 2009 11:09
  • Olá,

    Existe o runas no vbs, porém é uma falha de segurança, pois você terá que passar a senha no script.


    Oque você pode fazer, é dar permissão por gpo:

    Computer Configuration/Windows Settings/Security Settings/File System

    http://technet.microsoft.com/en-us/library/cc756952%28WS.10%29.aspx


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quarta-feira, 28 de outubro de 2009 10:20
  • Jesiel, se puderes gostaria que me informa-se esse runas para vbs pois este procedimento irei fazer apenas uma vez, o usuário ira logar e já ira copiar a ocx para a maquina, logo irei tirar o vbs, eu só precisava saber como é o comando runas.

    Em relação ao dar permissão por gpo não tem nada nesta pasta e realmente não sei mexer nesta área.

    obrigado mais uma vez. ;-)
    Fernando da Costa
    quarta-feira, 28 de outubro de 2009 13:38
  • Olá,

    Segue exemplo:

    Option explicit

    Dim oShell

    set oShell= Wscript.CreateObject("WScript.Shell")

    oShell.Run "runas /user:administrator@dominio.local ""\\script.vbs"""

    WScript.Sleep 100

    'deixe o caracter ~ depois da senha
    oShell.Sendkeys "senha~"

    Wscript.Quit


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quarta-feira, 28 de outubro de 2009 14:09
  • Bom dia!

    Pessoal, agradeço a todos pela ajuda segue como consegui resolver!

    Criei um script chamado "permissão" com o código do "Jesiel" e joguei na ou de logon de usuário.

    código:
    Option explicit

    Dim oShell

    set oShell= Wscript.CreateObject("WScript.Shell")

    oShell.Run "runas /user:administrator@suchynet ""\\fileserver\dll\teste.bat"""

    WScript.Sleep 100

    'deixe o ~"
    oShell.Sendkeys "xxxxxxxx~"

    Wscript.Quit


    Logo criei uma pasta compartilhada no meu servidor chamada DLL e dentro dela coloquei as ocx e as dll que quero copiar para a pasta system das maquinas.

    Dentro desta mesma pasta coloquei o meu arquivo bat.  Chamado  "teste.bat"

    Segue código:

    @ echo on


    xcopy \\fileserver\dll\MSINET.OCX c:\windows\system32 /s /e /y
    xcopy \\fileserver\dll\SmartFlexGrid.ocx c:\windows\system32 /s /e /y
    xcopy \\fileserver\dll\SmartFlexGrid.oca c:\windows\system32 /s /e /y

    regsvr32 /s SmartFlexGrid.ocx
    regsvr32 /s msinet.ocx


    Feito isto ele copiou os arquivos do meu servidor, jogou as dlls para a pasta system e registrou. Tudo com a permissão do administrador.


    Muito obrigado ao pessoal do foro pela força e desculpem a demora.



    Fernando da Costa
    sexta-feira, 13 de novembro de 2009 13:27