none
erro de permissão 800A0046 RRS feed

  • Pergunta

  • Olá amigos
    me pediram pra fazer um script para atualizar um de nossos programas internos, é so copiar um arquivo execultável para o c: usei esse

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    If objFSO.FileExists("C:\Arquivos de programas\SCTV") Then

        objFSO.delete
        objFSO.CopyFile "\\ntvsrv-file\publico\Versão Sctv para atualizar\v-141\sctvsis.exe" , "C:\Arquivos de programas\SCTV"
    Else
        objFSO.CopyFile "\\ntvsrv-file\publico\Versão Sctv para atualizar\v-141\sctvsis.exe" , "c:\Arquivos de programas\SCTV"
    End If

    da um erro de permissão negada esse código 800A0046

    segunda-feira, 9 de fevereiro de 2009 11:52

Respostas

  • Faça via GPO.

    -Crie uma GPO com script de Startup (inicialização), o script vai roda quando a maquina for ligada e vai rodar com a conta System (assim ela terá permissão para alterar arquivos no Arquivos de Programas).

    - O script pode ser em bat mesmo, bem simples.
    1 @ECHO OFF  
    2  
    3 IF EXIST "%programfiles%\SCTV" GOTO ATUALIZA  
    4 REM Cria Diretorio  
    5 MD "%programfiles%\SCTV"  
    6  
    7 :ATUALIZA  
    8 COPY "\\ntvsrv-file\publico\Versão Sctv para atualizar\v-141\sctvsis.exe"  "%programfiles%\SCTV" /y  
    9  

    Na linha 3 verificamos se existe o diretorios SCTV (utilizando variaveis o script ja fica preparada para qualquer idioma), se existe ele ja vai para a parte :Atualiza(linha 7) se não ele cria o diretório (linha 5 )
    Percebi que vc sempre copia o arquivo mesmo que o diretório não exista, o erro no seu script pode ser por vc mandar copiar para uma pasta que não existe, na bat eu crio o diretorio SCTV caso ele não exista (linha 5). Faço a copia na linha 8 com a opção /y para subscrever sem perguntar.

    - A pasta de origem da copia deve ter permissão de no minimo leitura para Todos no Share e no NTFS.

    - A GPO deve ser "Linkada" na OU onde estão as contas de computadores que serão atualizados.
    Fábio de Paula Junior
    terça-feira, 10 de fevereiro de 2009 12:47
    Moderador

Todas as Respostas

  • Olá,

    Faltou uma barra no seu programa, segue corrigido:

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    If objFSO.FileExists("C:\Arquivos de programas\SCTV\") Then

        objFSO.delete
        objFSO.CopyFile "\\ntvsrv-file\publico\Versão Sctv para atualizar\v-141\sctvsis.exe" , "C:\Arquivos de programas\SCTV\"
    Else
        objFSO.CopyFile "\\ntvsrv-file\publico\Versão Sctv para atualizar\v-141\sctvsis.exe" , "c:\Arquivos de programas\SCTV\"
    End If


    Salve e faça os testes.

    Se você tiver executando com usuário comum, verifique se o usuário tem acesso para excluir na pasta:C:\Arquivos de programas\SCTV.

    Até mais,

    Jesiel

    Obs.: se útil, classifique!
    segunda-feira, 9 de fevereiro de 2009 14:01
  • jesiel vlw pwl resposta mas continua dando o mesmo erro, eu estou executando esse script com adm do dominio, mas eu queria mesmo era colocar esse script como de logon, porque vira mexe tem atualiação do sistema, tem que como colocar a autenticação de amdministrado no script, para poder todos poderem efetuar essa mudança no momento de logon.
    segunda-feira, 9 de fevereiro de 2009 16:36
  • Olá,

    O problema é realmente permissão de pasta, faça o seguinte teste:

    1 - teste se o usuário tem permissão no arquivo que está no servidor (pode colar o caminho dele no menu executar e ver se executa)

    2 - Crie uma pasta no C:\teste

    3 - Execute o script abaixo:

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    If objFSO.FileExists("C:\teste\") Then

        objFSO.delete
        objFSO.CopyFile "\\servidor\compartilhamento\mp8rmt.exe" , "C:\teste\"
    Else
        objFSO.CopyFile "\\servidor\compartilhamento\mp8rmt.exe" , "C:\teste\"
    End If

    Se funcionar, realmente é permissão para o usuário na pasta c:\Arquivos de programas

    O melhor seria você ir na pasta e dar permissão para o usuário, porque passar usuario e senha de administrador em script é uma falha de segurança.

    Poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil ,classifique


    segunda-feira, 9 de fevereiro de 2009 17:36
  • Jesiel, eu executei o script como administrador do dominio e nada, continua dando msm erro.

    vlw
    terça-feira, 10 de fevereiro de 2009 10:09
  • Olá,

    Você está executando no servidor ou em um cliente???

    Se for no cliente, tem que ter permissão de administrador local.

    Faz o teste que te passei e veja se funciona... se funcionar... dê a permissão na pasta do seu programa.

    No aguardo...

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    terça-feira, 10 de fevereiro de 2009 11:37
  • Faça via GPO.

    -Crie uma GPO com script de Startup (inicialização), o script vai roda quando a maquina for ligada e vai rodar com a conta System (assim ela terá permissão para alterar arquivos no Arquivos de Programas).

    - O script pode ser em bat mesmo, bem simples.
    1 @ECHO OFF  
    2  
    3 IF EXIST "%programfiles%\SCTV" GOTO ATUALIZA  
    4 REM Cria Diretorio  
    5 MD "%programfiles%\SCTV"  
    6  
    7 :ATUALIZA  
    8 COPY "\\ntvsrv-file\publico\Versão Sctv para atualizar\v-141\sctvsis.exe"  "%programfiles%\SCTV" /y  
    9  

    Na linha 3 verificamos se existe o diretorios SCTV (utilizando variaveis o script ja fica preparada para qualquer idioma), se existe ele ja vai para a parte :Atualiza(linha 7) se não ele cria o diretório (linha 5 )
    Percebi que vc sempre copia o arquivo mesmo que o diretório não exista, o erro no seu script pode ser por vc mandar copiar para uma pasta que não existe, na bat eu crio o diretorio SCTV caso ele não exista (linha 5). Faço a copia na linha 8 com a opção /y para subscrever sem perguntar.

    - A pasta de origem da copia deve ter permissão de no minimo leitura para Todos no Share e no NTFS.

    - A GPO deve ser "Linkada" na OU onde estão as contas de computadores que serão atualizados.
    Fábio de Paula Junior
    terça-feira, 10 de fevereiro de 2009 12:47
    Moderador