none
Copia utilizando runas RRS feed

  • Pergunta

  • Ba galera boa noite

    estou tendo um problema com o codigo abaixo, necessito realizar a copia de uma dll de um servidor para as estações porem os usuarios não são admin, por isto estou tentando utilizar o codigo abaixo mais quando coloco o caminho de rede referente ao arquivo .bat que realizara a copia ele nao faz nada, e caso eu coloque por exemplo notepad.exe ele funciona, como eu posso fazer esta copia para o system32 tche.

    obrigado.

    codigo.

    OnErrorResumeNext

    strComputer = "."

    Set WshShell = CreateObject("WScript.Shell")

    WshShell.Run"runas /user:suporte \\servidor\compartilhamento\copia.bat"
    WScript.Sleep2000
    WshShell.Sendkeys"senha~"
    WshShell.Sendkeyschr(13)


    • Editado Marcelo TI quarta-feira, 15 de agosto de 2012 20:47
    quarta-feira, 15 de agosto de 2012 20:47

Respostas

  • Marcelo

    O seu problema deve estar relacionado a direito de acesso ao compartilhamento, pelo que eu compreendi do codigo vc esta utilizado um conta chamada suporte e deve ser uma conta local correto, caso seja isto esta conta não deve ter direitos de acessar o compartilhamento e por isto que nao executa o seu codigo, vc pode fazer assim crie ou utilize uma conta que seja admin das estações e que seja uma conta valida no dominio da sua empresa, e utilize a mesma na chamada do runas.

    Para evitar que o codigo chame outro arquivo vc pode fazer ele abrir uma sessão com a conta em questão, e desta sessão vc pode executar o comando de copia e o de registro da dll conforme codigo abaixo.

    Set WshShell = WScript.CreateObject("WScript.Shell")
    
    	WshShell.Run "runas /user:dominio\usuario cmd.exe", 9
    	Wscript.Sleep 2000
    	WshShell.SendKeys "senha" + "{Enter}"
    
    	Wscript.Sleep 2000
    	WshShell.SendKeys "copy \\servidor\compartilhamento\arquivo.dll C:\WINDOWS\system32" + "{Enter}"
    
    	WScript.Sleep 2000
    	WshShell.SendKeys "regsvr32.exe /s arquivo.dll" + "{Enter}"
    	
    	WScript.Sleep 2000	
    	WshShell.SendKeys "exit" + "{Enter}"

    Verifique se assim atende sua necessidade.

    abraço.


    Your potential. Our passion - Microsoft


    quarta-feira, 15 de agosto de 2012 21:45
  • Marcelo,

    Primeiro: Não utilize senhas nos scripts.

    Segundo: Já tentou fazer utilizando script de inicialização(start up)? ou GP Preferences?

    Sugestão:

    1. Coloque a dll em \\seuservidor\compartilhamento\suadll.dll

    2. Deixe o compartilhamento com permissão de leitura para Domain Computers

    3. Na pasta do compartilhamento garanta permissão (NTFS) de leitura para Domain Computers

    4. Faça um simples .bat para copiar esta dll de \\seuservidor\compartilhamento\suadll.dll para %systemroot%\system32

    5.coloque este script como script de inicialização em uma gpo que seja aplicada aos computadores dos usuários

    Quando o micro for reiniciado a dll será copiada.


    Fábio de Paula Junior


    • Editado Fábio JrModerator quinta-feira, 16 de agosto de 2012 21:53
    • Marcado como Resposta Marcelo TI sexta-feira, 17 de agosto de 2012 13:51
    quinta-feira, 16 de agosto de 2012 21:52
    Moderador

Todas as Respostas

  • Marcelo

    O seu problema deve estar relacionado a direito de acesso ao compartilhamento, pelo que eu compreendi do codigo vc esta utilizado um conta chamada suporte e deve ser uma conta local correto, caso seja isto esta conta não deve ter direitos de acessar o compartilhamento e por isto que nao executa o seu codigo, vc pode fazer assim crie ou utilize uma conta que seja admin das estações e que seja uma conta valida no dominio da sua empresa, e utilize a mesma na chamada do runas.

    Para evitar que o codigo chame outro arquivo vc pode fazer ele abrir uma sessão com a conta em questão, e desta sessão vc pode executar o comando de copia e o de registro da dll conforme codigo abaixo.

    Set WshShell = WScript.CreateObject("WScript.Shell")
    
    	WshShell.Run "runas /user:dominio\usuario cmd.exe", 9
    	Wscript.Sleep 2000
    	WshShell.SendKeys "senha" + "{Enter}"
    
    	Wscript.Sleep 2000
    	WshShell.SendKeys "copy \\servidor\compartilhamento\arquivo.dll C:\WINDOWS\system32" + "{Enter}"
    
    	WScript.Sleep 2000
    	WshShell.SendKeys "regsvr32.exe /s arquivo.dll" + "{Enter}"
    	
    	WScript.Sleep 2000	
    	WshShell.SendKeys "exit" + "{Enter}"

    Verifique se assim atende sua necessidade.

    abraço.


    Your potential. Our passion - Microsoft


    quarta-feira, 15 de agosto de 2012 21:45
  • Marcelo,

    Primeiro: Não utilize senhas nos scripts.

    Segundo: Já tentou fazer utilizando script de inicialização(start up)? ou GP Preferences?

    Sugestão:

    1. Coloque a dll em \\seuservidor\compartilhamento\suadll.dll

    2. Deixe o compartilhamento com permissão de leitura para Domain Computers

    3. Na pasta do compartilhamento garanta permissão (NTFS) de leitura para Domain Computers

    4. Faça um simples .bat para copiar esta dll de \\seuservidor\compartilhamento\suadll.dll para %systemroot%\system32

    5.coloque este script como script de inicialização em uma gpo que seja aplicada aos computadores dos usuários

    Quando o micro for reiniciado a dll será copiada.


    Fábio de Paula Junior


    • Editado Fábio JrModerator quinta-feira, 16 de agosto de 2012 21:53
    • Marcado como Resposta Marcelo TI sexta-feira, 17 de agosto de 2012 13:51
    quinta-feira, 16 de agosto de 2012 21:52
    Moderador
  • Leandro

    Obrigado tche era este mesmo o problema.

    Fabião

    Obrigado pela ajuda, o processo que vc descreveu eu custumo usar a questão é que nas estações que tenho que colocar a dll tche eu nao tenho direitos sobre o dominio e o administrador da outra ponta nao quer criar uma gpo, entao parti para o script e também me preocupei com a questão da senha tche mais irei compilar o codigo em um executavel para esconder a senha.

    ba trilegal tche obrigado aos dois.

    sexta-feira, 17 de agosto de 2012 13:58