Usuário com melhor resposta
Copia utilizando runas

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.
On Error Resume Next
strComputer = "."
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "runas /user:suporte \\servidor\compartilhamento\copia.bat"
WScript.Sleep 2000
WshShell.Sendkeys "senha~"
WshShell.Sendkeys chr(13)
- Editado Marcelo TI 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
- Editado Leandro Ribeiro da Silva quarta-feira, 15 de agosto de 2012 21:46
- Marcado como Resposta Marcelo TI sexta-feira, 17 de agosto de 2012 13:44
-
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
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
- Editado Leandro Ribeiro da Silva quarta-feira, 15 de agosto de 2012 21:46
- Marcado como Resposta Marcelo TI sexta-feira, 17 de agosto de 2012 13:44
-
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
-
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.