none
Scrip Active Desktop RRS feed

  • Pergunta

  • Olá, Boa tarde.

    Ativei a politica de papel de parede para todas a maquinas do meu dominio, porem tenho 7 imagens que uma divulgação do intranet com mensagem motivacionais e quero que a cada logon se possivel essas imagem sejam alternadas automatica.

    Gostaria de um scrip de logon que fizesse essa alternancia.

    Atenciosamente,

    Marcelo

    segunda-feira, 19 de abril de 2010 15:13

Respostas

  • Desculpe mandei o código errado...

    Segue o script... Teste com o seu usuario primeiro e depois com outros antes de aplicar;

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    Const ForReading = 1
    Const ForWriting = 2
    Dim sUsername, sPastaImagens, sPastaLogs, sLogsUsuarios, wshShell, sWallPaper
    Dim nPapelDeParede, nmaxPapelDeParede

    'Numero de papel de parede que deseja alternar....

    nmaxPaPelDeParede = 7

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set objFSO = CreateObject("Scripting.FileSystemObject")


    sUsername = WshNetwork.UserName
    'Local onde estão as imagens - nomeie elas como 1.bmp, 2.bmp e assim por diante
    sPastaImagens = "\\server\share\"
    'Crie uma pasta Logs dentro dessa pasta onde ficam as imagens que vai servir para guardar o ultimo papel de parede, os usuarios devem ter acesso de gravação nessa pasta
    sPastaLogs = sPastaImagens + "Logs\"
    sLogsUsuarios = sPastaLogs + sUsername + ".txt"


    If objFSO.FileExists(sLogsUsuarios) Then
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForReading)
       nPapelDeParede = objFile.ReadLine()
       objFile.Close
       TrocaImagem()
    Else
       objFSO.CreateTextFile(sLogsUsuarios)
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForWriting)  
       nPapelDeParede = 1
       objFile.WriteLine nPapelDeParede
       objFile.Close  
    End If

    sWallPaper = sPastaImagens & nPapelDeParede & ".bmp"

    Set wshShell = WScript.CreateObject("WScript.Shell")
    Set oShell = CreateObject("WScript.Shell")

    oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper

    oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
       
       

    Public Sub TrocaImagem()
       If CInt(nPapelDeParede) = CInt(nmaxPaPelDeParede) Then
          nPapelDeParede = 0
       End If
      
       If CInt(nPapeldeParede) <= CInt(nmaxPaPelDeParede) Then
          nPapeldeParede = CInt(nPapeldeParede) + 1
       End If
      
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForWriting)
       objFile.WriteLine nPapelDeParede
       objFile.Close
    End Sub



    --------------------------------------------------------------------------------------------------------------------------------------

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas
    terça-feira, 20 de abril de 2010 13:07

Todas as Respostas

  • Marcelo,

    Você precisa que altere a cada logon? Ou de tempo em tempo?

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas
    segunda-feira, 19 de abril de 2010 15:57
  • A cada logon..

     

    segunda-feira, 19 de abril de 2010 16:03
  • Cara conheço até algumas aplicações que fazem troca do papel de parede em intervalos, o problema é que essas aplicações tem que ser instaladas nas estações dos usuários.

    Desenvolvi esse script, fiz um teste aqui e funcionou. Se der algum erro poste.

    Substitua o que estiver em negrito e salve como vbs, tente executar primeiro na mão e depois via gpo.

    ---------------------------------------------------------------------------------------------------------------------------------------

    Const ForReading = 1
    Const ForWriting = 2
    Dim sUsername, sPastaImagens, sPastaLogs, sLogsUsuarios, wshShell, sWallPaper
    Int nPapelDeParede, nmaxPapelDeParede

    'Define o numero de Imagens que irão alternar

    nmaxPaPelDeParede = 7

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set objFSO = CreateObject("Scripting.FileSystemObject")


    sUsername = WshNetwork.UserName
    'Local onde estão as imagens - nomeie elas como 1.bmp, 2.bmp e assim por diante
    sPastaImagens = "\\server\share\ "

    'Crie uma pasta Logs dentro dessa pasta onde ficam as imagens que vai servir para guardar o ultimo papel de parede os usuarios devem ter acesso de gravação nessa pasta
    sPastaLogs = sPastaImagens + "Logs\"
    sLogsUsuarios = sPastaLogs + sUsername + ".txt"


    If objFSO.FileExists(sLogsUsuarios) Then
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForReading)
       nPapelDeParede = objFile.ReadLine()
       objFile.Close
       TrocaImagem()
    Else
       objFSO.CreateTextFile(sLogsUsuarios)
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForWriting)  
       nPapelDeParede = 1
       objFile.WriteLine nPapelDeParede
       objFile.Close  
    End If

    sWallPaper = sPastaImagens & nPapelDeParede & ".bmp"

    Set wshShell = WScript.CreateObject("WScript.Shell")
    Set oShell = CreateObject("WScript.Shell")

    oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper

    oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
       
       

    Public Sub TrocaImagem()
       If nPapelDeParede = nmaxPaPelDeParede Then
          nPapelDeParede = 1
       End If
      
       If nPapeldeParede <= nmaxPaPelDeParede Then
          nPapeldeParede = nPapeldeParede + 1
       End If
      
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForWriting)
       objFile.WriteLine nPapelDeParede
       objFile.Close
    End Sub


    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Abraço e qualquer dúvida poste.


    Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas
    segunda-feira, 19 de abril de 2010 19:50
  • Por favor feche esse thread http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/8fd404ee-30fc-4ca5-a245-6db65edceb54

    Já que é o mesmo.

    Grato.


    Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas
    segunda-feira, 19 de abril de 2010 19:58
  • Primeiramente obrigado pelo empenho.

    está ocorrendo o seguinte erro.

    Linha: 4

    Caract: 1

    Erro: Número de argumentos incorreto ou atribuição de propriedade inválida: 'Int'

    Código: 800A01C2

    Origem: Erro de tempo de execução do Microsoft VBScript.

     

    Atenciosamente,

    Marcelo Pereira da Silva 

     

     

     

    terça-feira, 20 de abril de 2010 12:38
  • Desculpe mandei o código errado...

    Segue o script... Teste com o seu usuario primeiro e depois com outros antes de aplicar;

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    Const ForReading = 1
    Const ForWriting = 2
    Dim sUsername, sPastaImagens, sPastaLogs, sLogsUsuarios, wshShell, sWallPaper
    Dim nPapelDeParede, nmaxPapelDeParede

    'Numero de papel de parede que deseja alternar....

    nmaxPaPelDeParede = 7

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set objFSO = CreateObject("Scripting.FileSystemObject")


    sUsername = WshNetwork.UserName
    'Local onde estão as imagens - nomeie elas como 1.bmp, 2.bmp e assim por diante
    sPastaImagens = "\\server\share\"
    'Crie uma pasta Logs dentro dessa pasta onde ficam as imagens que vai servir para guardar o ultimo papel de parede, os usuarios devem ter acesso de gravação nessa pasta
    sPastaLogs = sPastaImagens + "Logs\"
    sLogsUsuarios = sPastaLogs + sUsername + ".txt"


    If objFSO.FileExists(sLogsUsuarios) Then
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForReading)
       nPapelDeParede = objFile.ReadLine()
       objFile.Close
       TrocaImagem()
    Else
       objFSO.CreateTextFile(sLogsUsuarios)
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForWriting)  
       nPapelDeParede = 1
       objFile.WriteLine nPapelDeParede
       objFile.Close  
    End If

    sWallPaper = sPastaImagens & nPapelDeParede & ".bmp"

    Set wshShell = WScript.CreateObject("WScript.Shell")
    Set oShell = CreateObject("WScript.Shell")

    oShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", sWallPaper

    oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
       
       

    Public Sub TrocaImagem()
       If CInt(nPapelDeParede) = CInt(nmaxPaPelDeParede) Then
          nPapelDeParede = 0
       End If
      
       If CInt(nPapeldeParede) <= CInt(nmaxPaPelDeParede) Then
          nPapeldeParede = CInt(nPapeldeParede) + 1
       End If
      
       Set objFile = objFSO.OpenTextFile(sLogsUsuarios, ForWriting)
       objFile.WriteLine nPapelDeParede
       objFile.Close
    End Sub



    --------------------------------------------------------------------------------------------------------------------------------------

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas
    terça-feira, 20 de abril de 2010 13:07
  • Alguma novidade?

    Abraço.


    Gabriel Nascimento MCP / MCSA / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    terça-feira, 11 de maio de 2010 14:49