Вопрос: Доступ к PowerShell запрещен для сертификата: \ CurrentUser \ My


PS cert:\currentuser\my> dir  
Get-ChildItem : Access is denied.
At line:1 char:3
+ dir <<<<

Я не могу получить доступ к каким-либо моим сертификатам подписи кода, чтобы подписать сценарий PowerShell. Я могу открыть MMC, сертификаты и увидеть, что мои сертификаты подписи кода установлены и действительны на моем компьютере (Windows XP SP 3).

Другая странная вещь заключается в том, что я не могу получить доступ к каким-либо моим подключенным сетевым дискам из PowerShell, но я вижу их в Windows Explorer и в окне DOS.

Я удалил PowerShell, перезагрузил и снова установил PowerShell 1, но по-прежнему имеет ту же проблему.

РЕДАКТИРОВАТЬ: Моя ежедневная учетная запись на этом компьютере НЕ является администратором, но у меня есть учетная запись администратора, которую я могу использовать для задач, которые этого требуют. Сертификат подписи кода присваивается моей дневной учетной записи, и мне не нужно быть администратором для подписи кода. Я не уверен, как передать права учетной записи в хранилище сертификатов.

EDIT 2:  Я побежал FileMon а также RegMon чтобы увидеть, к чему мне отказывают. cert:CurrentUser\My это папка C:\Documents and Settings\USERNAME\Application Data\Microsoft\SystemCertificates\My\Certificates, Он также лишил меня доступа к C:\Documents and Settings\USERNAME\Local Settings\Temp, Я могу открыть Explorer и получить файлы в этих папках без проблем. Я временно дал Everyone полные права на эти папки и все еще получили сообщение об отказе в доступе от PowerShell.

Google не показал много. Что мне делать?

Сообщение из журнала событий Windows PowerShell:

Provider Health: Attempting to perform the GetChildItems operation on  
the 'Certificate' provider failed for path '\currentuser\my'. Access is denied.

Details: 
ProviderName=Certificate
ExceptionClass=ProviderInvocationException
ErrorCategory=InvalidOperation
ErrorId=GetChildrenProviderException
ErrorMessage=Attempting to perform the GetChildItems operation on  
       the 'Certificate' provider failed for path '\currentuser\my'.  
       Access is denied.

Severity=Warning
SequenceNumber=146

HostName=ConsoleHost
HostVersion=1.0.0.0
     .....  

3
2017-08-11 21:24


Источник


Может быть, тупой вопрос, но папка на самом деле называется «мой»? Это похоже на более длинное имя папки, которое было усечено в пространстве между «моим» и другим. - boot13
Это имя папки, вы можете открыть powershell и перейти к ней, и она работает как другой пользователь. PS D: \ Projects> cd cert: PS cert: \> cd CurrentUser PS cert: \ CurrentUser> cd My PS cert: \ CurrentUser \ My> dir Get-ChildItem: доступ запрещен. - Bratch


Ответы:


Похоже, у вас есть проблемы с разрешениями.

Является ли это учетной записью администратора на этом ПК, подчинен ли вам контроль домена, и включены ли групповые политики?

Я предполагаю, что этот компьютер заблокирован больше, чем хотелось бы PowerShell. Некоторые администраторы не позволят ему запускаться вообще, так как это может нанести какой-то ущерб.

Когда вы запускаете Set-ExecutionPolicy RemoteSigned вы получаете какие-либо ошибки?


3
2017-08-11 21:29



Хорошие моменты, я сделал редактирование вопроса о том, чтобы быть администратором. Существуют действующие правила управления доменами и групповые политики, поэтому мне нужно будет проверить с помощью I.S. о них. В качестве программиста я пишу скрипты, а моя учетная запись администратора работает нормально, просто не эта учетная запись пользователя. Установка политики выполнения запретила мне доступ к ключу «HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell." Я проверяю с помощью I.S. Теперь ... - Bratch
Я смог изменить этот раздел реестра вручную, но не могу установить его из PowerShell. PowerShell работает как я, поэтому я не понимаю, почему есть разница. - Bratch
Никаких параметров управления доменами или групповых политик не существует, что помешает мне запустить PowerShell и получить доступ к хранилищу сертификатов. Это связано с тем, что у вас нет прав доступа к хранилищу сертификатов, и я не уверен, как получить эти права, чтобы powershell мог получить доступ к сертификатам. - Bratch
Принимается из-за упоминания групповых политик. - Bratch


PowerShell работает через .NET Framework. Я не использовал XP какое-то время, бит, если я правильно помню, в списке пользователей есть какой-то странный пользователь .NET. Мне никогда не приходило в голову выяснить, для чего это необходимо, но, возможно, вам нужно предоставить права пользователя NTFS на данный каталог.


2
2017-08-11 23:51



Это может быть так, но я не уверен, где назначить права доступа для хранилища сертификатов. В скором времени у меня появится коробка с XP, поэтому у меня появятся новые проблемы, но до этого мне еще нужно подписать скрипты. - Bratch
Так что PowerShell на самом деле работает не так, как я? Он показывает мое имя пользователя в диспетчере задач. - Bratch
Я просто пытался подумать о возможностях того, почему, похоже, проблема с разрешениями. - paradroid


Я узнал, почему это происходит. Если я просто запускаю PowerShell из меню, у меня возникают проблемы с доступом к сертификатам и другим ресурсам. Например, если я просто запустил его и перешел в мой домашний каталог и запустил «dir», я получаю следующее:

PS C:\Documents and Settings\username> dir
Get-ChildItem : Access to the path 'C:\Documents and Settings\username' is denied.
At line:1 char:3
+ dir <<<<
PS C:\Documents and Settings\username>

Тем не менее я могу использовать проводник Windows или окно DOS для успешного отображения содержимого.

Что работает, когда я нажимаю правой кнопкой мыши на PowerShell и выбираю «Запустить как», оставьте его текущему пользователю и снимите флажок «Защитить мой компьютер и данные от несанкционированной активности программы». После этого я могу перечислить свой домашний каталог, и я могу получить доступ к сертификату, который мне нужен, чтобы подписать мой код.

Мои настройки DEP выделены серым цветом, что означает, что они подталкиваются групповой политикой, или мне нужно поднять ее до администратора, чтобы изменить ее. Я вошел в систему как администратор и обнаружил, что DEP включен только для основных программ и служб Windows. Я думаю, PowerShell попадает в эту категорию. Теперь, когда я могу получить доступ к сертификату, я обнаружил, что закрытый ключ не найден. Я думаю, что это можно исправить, переиздав сертификат.


1
2017-10-28 23:24





Попробуйте запустить Set-ExecutionPolicy Unrestricted в powershell


0
2017-08-20 10:24