1

Я пишу сценарий PowerShell, который должен отредактировать XML-файл конфигурации для службы заявок на службу маркеров Windows (C2WTS) как "любой пользователь", но не смог сохранить файл после внесения изменений в объект XML. Используя следующий код:

$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")

Запустив этот код, я получаю ошибку:

Исключение, вызывающее "Сохранить" с аргументом (ами)"1": «Доступ к пути« C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config »запрещен».

Я попытался настроить ACL, чтобы пользователь, выполняющий скрипт, мог затем отредактировать файл XML с помощью следующего кода:

$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

но получить ошибку, возвращаемую как:

«Set-Acl: попытка выполнить несанкционированную операцию».

Может ли кто-нибудь помочь мне добраться до того момента, когда я смогу сохранить сделанные мной изменения в файле XML?

1 ответ1

0

Не уверен, какую операционную систему вы используете, но ядро Vista ненавидит все, что пишет в Program Files, кроме установщиков. Некоторые старые программы несовместимы, так как они пытаются загрузить обновления и т.д. В эту папку и не работают. Я не исследовал причины, так как считаю, что в целом это хорошо. Но я уверен, что проблемы с разрешениями связаны. Вы проверили разрешения для целевой папки и ее родителей?

Кроме того, я не знаю, насколько это актуально, но если к файлу обращается какой-либо файл, он не будет доступен для редактирования. Получаемые сообщения об ошибках обычно имитируют проблемы с разрешениями. Знаете ли вы, есть ли другой дескриптор этого файла?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .