Acesso do PowerShell negado para cert: \ CurrentUser \ My

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

Não consigo acessar nenhum dos meus certificados de assinatura de código para assinar um script do PowerShell. Posso abrir o MMC, os Certificados e ver que meus certificados de assinatura de código estão instalados e são válidos na minha máquina (Windows XP SP 3).

A outra coisa estranha é que não consigo acessar nenhuma das minhas unidades de rede mapeadas do PowerShell, mas posso vê-las bem no Windows Explorer e em uma janela do DOS.

Eu desinstalei o PowerShell, reiniciei e reinstalei o PowerShell 1, mas ainda tenho o mesmo problema.

EDITAR: Minha conta do dia-a-dia nesta máquina NÃO é um administrador, mas eu tenho uma conta de administrador que posso usar para tarefas que exigem isso. O certificado de assinatura de código é atribuído à minha conta do dia-a-dia e eu não deveria ter que ser um administrador para assinar o código. Não tenho certeza de como conceder esses direitos de conta ao armazenamento de certificados.

EDIT 2: eu corri FileMon e RegMon para ver a que estou sendo negado acesso. cert:CurrentUser\My é a pasta C:\Documents and Settings\USERNAME\Application Data\Microsoft\SystemCertificates\My\Certificates . Também me negou acesso a C:\Documents and Settings\USERNAME\Local Settings\Temp . Eu posso abrir o Explorer e acessar os arquivos dessas pastas sem problemas. Eu dei temporariamente Everyone direitos totais a essas pastas e ainda recebi a mensagem de acesso negado do PowerShell.

O Google não revelou muito. O que devo fazer?

Mensagem do log de eventos do 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
     .....  
    
por Bratch 11.08.2010 / 23:24

4 respostas

3

Parece que você tem problemas com permissões.

Esta é uma conta de administrador neste PC, você está sujeito a controles de domínio e há políticas de grupo ativadas?

Suponho que este PC está bloqueado mais do que o PowerShell gostaria. Alguns administradores não permitem que ele seja executado, pois é possível causar algum dano.

Quando você corre %código% você recebe algum erro?

    
por 11.08.2010 / 23:29
2

O PowerShell é executado no .NET Framework. Eu não usei XP por um tempo, pouco se bem me lembro, há algum usuário estranho do .NET na lista de usuários. Eu nunca cheguei a descobrir o que era isso, mas talvez você precise dar a esse usuário direitos de NTFS para o diretório em questão.

    
por 12.08.2010 / 01:51
1

Eu descobri porque isso estava acontecendo. Se eu apenas executar o PowerShell no menu, tenho problemas para acessar certificados e outros recursos. Por exemplo, se eu apenas executá-lo e navegar para o meu diretório home e executar "dir", recebo isso:

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>

No entanto, posso usar o Windows Explorer ou uma janela do DOS para listar com êxito o conteúdo.

O que funciona é quando clico com o botão direito do mouse no PowerShell e seleciono "Executar como", o deixo com o usuário atual e desmarque a opção "Proteger meu computador e dados de atividades não autorizadas do programa". Depois disso, posso listar meu diretório pessoal e acessar o certificado necessário para assinar meu código.

As configurações da minha DEP estão esmaecidas, o que significa que elas são enviadas por uma diretiva de grupo ou preciso elevar para o Administrador para alterá-la. Eu entrei como Administrador e descobri que a DEP está ativa apenas para programas e serviços essenciais do Windows. Eu acho que o PowerShell se enquadra nessa categoria. Agora que posso acessar o certificado, descobri que a chave privada não pode ser encontrada. Eu acho que isso pode ser corrigido por ter o certificado reeditado.

    
por 29.10.2011 / 01:24
0

Tente executar Set-ExecutionPolicy Unrestricted no powershell

    
por 20.08.2014 / 12:24