Problemas ao salvar um arquivo XML editado em um script do PowerShell


1

Estou escrevendo um script do PowerShell que precisa editar o arquivo de configuração xml para o Serviço de Tokens de Declarações no Windows (C2WTS) como "qualquer usuário", mas não foi possível salvar o arquivo depois de fazer alterações no objeto XML. Usando o seguinte código:

$xml.load("C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config")
changes here
$xml.save("C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config")

Executando este código, recebo o erro:

Exceção ao chamar "Salvar" com o argumento "1": "O acesso ao caminho 'C: \ Arquivos de Programas \ Windows Identity Foundation \ v3.5 \ c2wtshost.exe.config' foi negado."

Tentei configurar a ACL para que o usuário que executa o script possa editar o arquivo XML com o seguinte código:

$acl = Get-Acl "C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config"
$Ar = New-Object system.Security.AccessControl.FileSystemAccessRule($user,"FullControl","Allow")
$acl.SetAccessRule($Ar)
Set-Acl "C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config" $acl

mas obtenha um erro retornado como:

"Set-Acl: tentou executar uma operação não autorizada."

Alguém pode me ajudar a chegar a um ponto em que eu posso salvar as alterações que fiz no arquivo XML?

Respostas:


0

Não tenho certeza do sistema operacional que você está usando, mas o kernel do Vista odeia qualquer coisa gravada nos Arquivos de Programa, exceto os instaladores. Alguns programas mais antigos não são compatíveis porque tentam baixar atualizações e assim por diante nessa pasta e falham. Não investiguei as razões, pois acredito que é uma coisa boa em geral. Mas tenho certeza de que estão envolvidos problemas de permissão. Você verificou as permissões na pasta de destino e seus pais?

Além disso, não sei o quanto é relevante, mas se o arquivo estiver sendo acessado por qualquer coisa, ele não estará disponível para edição. As mensagens de erro produzidas geralmente imitam as de problemas de permissão. Você sabe se existe outro identificador para esse arquivo?


O sistema operacional é o Windows Server 2008 R2 e o arquivo possui configurações de segurança para administradores e usuários. Os administradores têm controle total, mas os usuários têm apenas o recurso Leitura e Execução. Eu pensei que Set-ACL seria o cmdlet que permitiria que o arquivo fosse alterado?
Vermin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.