Ao executar o script Python na linha de comando, recebo este erro
Windows cannot access the specified device, path, or file. You man not
have the appropriate permissions to access the item.
Como posso verificar qual caminho o sistema tenta acessar? Nenhuma entrada é criada em nenhum dos logs do sistema (Aplicativo, Segurança, Configuração, Sistema). Todas as soluções que encontrei na web mencionam a alteração das propriedades do arquivo. O problema é que neste caso eu não sei qual arquivo o sistema tenta usar para manipular o script Python. Como posso encontrar essa informação? Eu acho que uma ferramenta que monitora todos os arquivos que o sistema tenta abrir pode ajudar aqui.
Detalhes
Quando tento executar o script Python com .py
extenstion na linha de comando apenas fornecendo o nome do script (como sample.py
), recebo o erro acima. Eu acho que o problema é devido a má associação de arquivos, mas ... executando reg query HKCR\.py /ve
dá (Default) REG_SZ Python.File
e reg query HKCR\Python.File\shell\open\command /ve
dá
(Default) REG_SZ c:\python.7\python.exe "%1" %*
e o arquivo c:\python.7\python.exe
existe e eu posso executá-lo a partir da linha de comando sem problema. Isso me faz pensar que o sistema tenta abrir o script Python usando algum outro caminho no registro. O problema é que não tenho ideia do que é esse caminho.
Windows Vista 64 bits, executando 64 bits cmd.exe, 64 bits Python.
EDITAR
O Process Monitor é muito útil, mas ainda não consigo encontrar a raiz exata que causa o problema. Tentar lançar o script Python gera 866 entradas:
BUFFER TOO SMALL 1
END OF FILE 1
FILE LOCKED WITH ONLY READERS 12
NAME NOT FOUND 301
NO MORE ENTRIES 4
REPARSE 5
SUCCESS 542
Não há resultado NO SUCH FILE
. Eu acho que é porque o sistema nem sequer tenta iniciar o executável para abrir o arquivo Python devido a não ser capaz de encontrar um manipulador de definição de entrada de registro adequado para .py
files. Existem 178 entradas do tipo RegQueryKey
e 141 entradas do tipo RegQueryValue
, mas eu tenho dificuldade em tentar tirar qualquer conclusão lendo elas.