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

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

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

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

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

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

РЕДАКТИРОВАТЬ 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. Я могу без проблем открыть Проводник и добраться до файлов в этих папках. Я временно дал 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
Может быть, глупый вопрос, но действительно ли папка называется «моя»? Это выглядит как более длинное имя папки, которое было усечено в промежутке между «my» и чем-то еще. boot13 14 лет назад 0
Это имя папки, вы можете открыть powershell и перейти к ней, и она работает как другой пользователь. PS D: \ Projects> Сертификат cd: Сертификат PS: \> Сертификат cd CurrentUser Сертификат PS: \ CurrentUser> Сертификат cd My PS: \ CurrentUser \ My> dir Get-ChildItem: Доступ запрещен. Bratch 14 лет назад 0

4 ответа на вопрос

3
JNK

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

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

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

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

Хорошие моменты, я внес изменение в вопрос о том, чтобы быть администратором. Действуют элементы управления доменом и групповые политики, поэтому мне нужно будет узнать об этом в IS. Как программист я пишу сценарии, и моя учетная запись администратора работает нормально, только не эта учетная запись пользователя. Установка политики выполнения запрещала мне доступ к ключу «HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell». Я проверяю с IS сейчас ... Bratch 14 лет назад 0
Мне удалось отредактировать этот раздел реестра вручную, но я не могу установить его из PowerShell. PowerShell работает как я, поэтому я не понимаю, почему есть разница. Bratch 14 лет назад 0
Отсутствуют элементы управления доменом или групповые политики, которые не позволяли бы мне запускать PowerShell и получать доступ к хранилищу сертификатов. Это сводится к отсутствию разрешений на доступ к хранилищу сертификатов, и я не уверен, как получить эти права, чтобы powershell мог получить доступ к сертификатам. Bratch 14 лет назад 0
Принимается из-за упоминания групповых политик. Bratch 13 лет назад 0
2
paradroid

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

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

Я обнаружил, почему это происходит. Если я просто запускаю 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 Explorer или окно DOS, чтобы успешно отобразить содержимое.

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

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

0
javahaxxor

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