none
Criar atalho e definir permissões RRS feed

  • Pergunta

  • Olá Pessoal,

    Tenho um script que verifica uma unidade mapeada e cria um atalho para ela na area de trabalho:

    set WshShell = WScript.CreateObject("WScript.Shell")
     strDesktop = WshShell.SpecialFolders("Desktop")
     set oShellLink = WshShell.CreateShortcut(strDesktop & "\Aplicacoes.lnk")
     oShellLink.TargetPath = "q:"
     oShellLink.Save

    Quero que este atalho seja criado com direitos apenas de leitura para TODOS usuários exceto domain admins.

    Preciso disso para que os usuários não mudem o nome do atalho, excluam, etc.

    Já vi o comando CACLS, parece que faz isso, mas não estou conseguindo fazer...

    Se alguém puder ajudar...

    Obrigado
    sexta-feira, 9 de janeiro de 2009 20:14

Todas as Respostas

  • Alguém ajuda???
    segunda-feira, 12 de janeiro de 2009 16:11
  • Hugo

     

    veja se este exemplo pode lhe ajudar

     

    cacls c:\teste.txt /c /g todos:R

     

    todos = ao grupo de segurança todos, ele pode ser substituido por usuario

     

     

     

    terça-feira, 13 de janeiro de 2009 12:38
  •  

    Boa tarde...

     

    Talves isso possa lhe ajudar.

     

    CACLS nome-arquivo [/T] [/E] [/C] [/G usu rioStick out tongueerm] [/R usu rio [...]]

                       [/P usu rioStick out tongueerm [...]] [/D usu rio [...]]

       nome-arquivo     Exibe ACLs.

       /T               Altera ACLs de arquivos especificados

                        na pasta atual e em todas as subpastas.

       /E               Edita ACL em vez de substitu¡-la.

       /C               Continua ao encontrar erros de acesso negado.

       /G usu rioStick out tongueerm  Concede os direitos de acesso ao usu rio especificado.

                        Perm pode ser: R  Ler

                                  W  Gravar

                                  C  Alterar (gravar)

                                  F  Controle total

       /R usu rio       Revoga os direitos de acesso do usu rio especificado

                        (v lido somente com /E).

       /P usu rioStick out tongueerm  Substitui os direitos de acesso do usu rio especificado.

                        Perm pode ser: N  Nenhum

                                  R  Ler

                                  W  Gravar

                                  C  Alterar (gravar)

                                  F  Controle total

       /D usu rio       Nega o acesso ao usu rio especificado.

    Caracteres curinga podem ser usados para especificar mais de um arquivo

    em um comando.

    Vocˆ pode especificar mais de um usu rio em um comando.

     

    Abreviaçes:

       CI - Heran~ça de recipiente.

            O ACE ser  herdado pelas pastas.

       OI - Heran‡a de objeto.

            O ACE ser  herdado pelos arquivos.

       IO - Somente heran‡a.

            O ACE nÆo se aplica ao arquivo/pasta atual.

     

    Abra o prompt e execute "cacls /?".

    Acho que vai tirar suas duvidas sobre o comando.

    Abraço e boa sorte!

     

     

    quarta-feira, 14 de janeiro de 2009 17:14
  • Pessoal, valeu pelas dicas, mas como este comando ficaria no meu vbs?

    set WshShell = WScript.CreateObject("WScript.Shell")
     strDesktop = WshShell.SpecialFolders("Desktop")
     set oShellLink = WshShell.CreateShortcut(strDesktop & "\Aplicacoes.lnk")
     oShellLink.TargetPath = "q:"
     oShellLink.Save

    Se puderem ajudar...

    valew
    quarta-feira, 14 de janeiro de 2009 18:06
  • Hugo

     

    Para executar qualquer aplicação a partir de um vbs voce tem 2 opções

     

    Set App = WshShell.Exec ("cacls c:\teste.txt /c /g todos:R")

     

    ou

     

    WshShell.Run "cacls c:\teste.txt /c /g todos:R",1,False

     

     

    a segunda opção costuma ser a mais utilizada, e é mais facil de se manipular, porem as duas funcionam

     

     

    abracos

    quinta-feira, 15 de janeiro de 2009 01:13


  • set WshShell = WScript.CreateObject("WScript.Shell")
     strDesktop = WshShell.SpecialFolders("Desktop")
     set oShellLink = WshShell.CreateShortcut(strDesktop & "\Aplicacoes.lnk")
     oShellLink.TargetPath = "q:"
    WshShell.Run "cacls %username%\desktop\Aplicacoes.lnk /c /g todos:R",1,False
     oShellLink.Save



    Ficaria assim mais ou menos???
    quero negar acesso a todos, apenas leitura...
    Valew galera!
    quinta-feira, 15 de janeiro de 2009 12:22
  • Hugo

     

     

    O atalho so é criado apos o comando  oShellLink.Save, então deixe o script assim

     

    set WshShell = WScript.CreateObject("WScript.Shell")
     strDesktop = WshShell.SpecialFolders("Desktop")
     set oShellLink = WshShell.CreateShortcut(strDesktop & "\Aplicacoes.lnk")
     oShellLink.TargetPath = "q:"
     oShellLink.Save

    WshShell.Run "cacls %username%\desktop\Aplicacoes.lnk /c /g todos:R",1,False

    quinta-feira, 15 de janeiro de 2009 12:25
  • Não está dando certo,
    Ele libera acesso total,
    se eu troco o G por P, ele pergunta se tenho ctz, mas mesmo colocando s ou y ele da acesso total...

    quinta-feira, 15 de janeiro de 2009 13:38
  • Hugo

     

    Eu fiz um teste aqui com seu script, o cacls não esta removendo as permissões herdadas

     

    veja este script disponibilizado pela microsoft ele deve resolver seu problema

     

    http://support.microsoft.com/kb/825751/pt

     

     

    quinta-feira, 15 de janeiro de 2009 14:31
  • Hugo fiz algumas alterações no script e funcionou

     

    veja se fica melhor para seu ambiente implantar o script abaixo ou utilizar o que se encontra no link acima que te passei

     

    set WshShell = WScript.CreateObject("WScript.Shell")
     strDesktop = WshShell.SpecialFolders("Desktop")
     set oShellLink = WshShell.CreateShortcut(strDesktop & "\Aplicacoes.lnk")
     oShellLink.TargetPath = "Q:"
     oShellLink.Save

    File = """" & strDesktop & "\Aplicacoes.lnk"""
    Wscript.sleep (2000)
    WshShell.Run "cacls " & File & " /C /G todos:R",1,False

    Wscript.sleep 600
    WshShell.sendkeys "s"
    Wscript.sleep 600
    WshShell.sendkeys "{ENTER}"

    wscript.quit

     

    quinta-feira, 15 de janeiro de 2009 14:44
  • Tiago,

    Muito obrigado pela sua ajuda, mas ainda não funcionou... não sei se será possível...

    alterei a linha para: WshShell.Run "cacls " & File & " /C /P todos:N",1,False

    ele fez o que eu queria, não deixa remover, renomear, etc o atalho, porém também não executa.
    Se eu coloco

    alterei a linha para: WshShell.Run "cacls " & File & " /C /P todos:R",1,False
    Ele deixa eu fazer acessar, porém também libera para remover, renomear, etc.

    Será que tem solução para isto?

    Mais uma vez muito obrigado!
    quinta-feira, 15 de janeiro de 2009 16:10