Obter acesso à pasta %ProgramFiles%\WindowsApps e ver o código-fonte das apps

Ler o código-fonte desenvolvido por outras pessoas é uma das formas mais interessantes de aprender coisas novas, em minha opinião. No caso das aplicações Windows 8, gosto de perceber como determinadas apps foram desenvolvidas, que tipos de funções foram utilizadas para resolver determinados problemas, e até mesmo como é que alguns ecrãs foram desenhados e quais estilos foram aplicados.

Todas as aplicações “Windows Store” que instalamos através da loja Windows são armazenadas fisicamente na pasta %ProgramFiles%\WindowsApps, como citei em outro artigo, e dentro desta pasta existem as diversas sub-pastas que representam cada aplicação.

Dentro da pasta de uma aplicação, estão todos os ficheiros necessários para que a aplicação seja executada, incluindo ficheiros XAML, executáveis e assemblies para aplicações desenvolvidas em XAML/.NET ou C++, e ficheiros HTML, JavaScript CSS, para aplicações desenvolvidas com essas linguagens.

No entanto, o acesso à pasta %ProgramFiles%\WindowsApps é bloqueado para um utilizador normal, e o único utilizador com permissões para aceder e modificar essa pasta é um utilizador chamado “TrustedInstaller“, que é utilizado para instalar e desinstalar aplicações Windows Store. Este utilizador tem permissões de “owner” da pasta, e portanto tem total controlo.

Estas são as definições padrão de permissões da pasta %ProgramFiles%\WindowsApps:

Só é possível haver um utilizador “owner” de uma pasta, e apenas esse utilizador é que consegue atribuir permissões de acesso a outros utilizadores. Assim, para conseguirmos ter permissão para aceder ao conteúdo da pasta %ProgramFiles%\WindowsApps, temos de seguir estes passos:

  1. Atribuir a permissão de “owner” para o nosso utilizador (e como só pode haver um “owner“, o “TrustedInstaller” deixa de ser o “owner” da pasta);
  2. Atribuir permissões de acesso à pasta para o nosso utilizador;
  3. Atribuir a permissão de “owner” de volta para o utilizador “TrustedInstaller“, para que as aplicações continuem a ser instaladas/desinstaladas sem problemas.

Para atribuir a permissão de “owner” na pasta WindowsApps, precisamos abrir um Command Prompt como Administrador, e utilizar o comando takeown, mas antes convém fazer um backup das permissões desta pasta, para no caso de algo der errado podermos restaurar as permissões exactamente como estavam:

@REM Backup das permissões actuais
icacls "%ProgramFiles%\WindowsApps" /save "%TEMP%\WindowsApps.acl" /Q

@REM Atribuir "owner" ao utilizador actual
takeown /F "%ProgramFiles%\WindowsApps"

Neste momento, o utilizador actual passou a ser o “owner” da pasta WindowsApps. Na imagem acima, pode ver que é o meu utilizador “Caio Proiete”.

O próximo passo é atribuir permissões de acesso à pasta para o utilizador actual, e neste exemplo estou a atribuir permissão de controlo total:

@REM Atribuir permissões "full control" para o utilizador actual
icacls "%ProgramFiles%\WindowsApps" /grant "%username%":F /Q

Por fim, atribuímos a permissão “owner” de volta ao utilizador “TrustedInstaller“, para que tudo volta a estar como antes, excepto que agora o nosso utilizador também tem permissões para aceder ao conteúdo da pasta:

@REM Atribuir "owner" de volta ao utilizador "TrustedInstaller"
icacls "%ProgramFiles%\WindowsApps" /setowner "NT Service\TrustedInstaller"

Neste momento, se não recebeu nenhuma mensagem de erro, já deve conseguir aceder ao conteúdo da pasta.

Estas são as definições de permissão da pasta %ProgramFiles%\WindowsApps após seguir os passos acima:


Se algo der errado

Se o processo acima correu mal, tem sempre a opção de restaurar as permissões originais a partir do backup que efectuou logo no início:

@REM Restaurar as permissões originais da pasta "WindowsApps"
icacls "%ProgramFiles%" /restore "%TEMP%\WindowsApps.acl" /Q


O script completo ( GrantAccess-WindowsApps.cmd )

@echo Backing up current folder permissions to a temporary file
@icacls "%ProgramFiles%\WindowsApps" /save "%TEMP%\WindowsApps.acl" /Q
@if ERRORLEVEL 1 goto rollback

@echo Assigning the ownership of the folder to the current logged user
@takeown /F "%ProgramFiles%\WindowsApps"
@if ERRORLEVEL 1 goto rollback

@echo Assigning full control on the folder for the current logged user
@icacls "%ProgramFiles%\WindowsApps" /grant "%username%":F /Q
@if ERRORLEVEL 1 goto rollback

@echo Assigning the ownership of the folder back to the "TrustedInstaller" user
@icacls "%ProgramFiles%\WindowsApps" /setowner "NT Service\TrustedInstaller"
@if ERRORLEVEL 1 goto rollback

@goto success

:rollback
@echo.
@echo Error! Rolling back...
@icacls "%ProgramFiles%" /restore "%TEMP%\WindowsApps.acl" /Q
@echo.
@echo Check the error messages above to see why it didn't work
@echo Did you forgot to run as administrator?
@goto end

:success
@echo.
@echo Success! You should have access to the "%ProgramFiles%\WindowsApps" folder
@goto end

:end
Esta entrada foi publicada em Windows 8 com as tags , , , , . ligação permanente.

13 Respostas a Obter acesso à pasta %ProgramFiles%\WindowsApps e ver o código-fonte das apps

  1. Pingback: Localização física dos dados e aplicações Windows Store no PC | Caio Proiete (PT)

  2. Brener diz:

    Ótima dica, assim começamos a burlar a app store do windows, assim como a google play do android, basta aprendermos a instalar.

  3. Oliveira diz:

    Wow, muito obrigado pela dica!

  4. Eric Santos diz:

    Caio, Boa Noite!

    No meu caso a pasta WindowsApps se encontra na pasta “Arquivos de Programas” e não no Program Files
    Quando tento executar o seu passo a passo, o back-up das informações ele faz, mas a atribuição de Owner não, ele informa que não foi encontrado o caminho…

    Se puder me ajudar… estava com alguns problemas na net e removi o arquivo LiveComm.exe em uma subpasta desta, e agora não consigo mas restaura-lo ao seu local de origem.

    Abraços!

  5. Felipe Moreira diz:

    Muito boa dica funcionou aqui!!!

  6. genivaldo diz:

    Ótima dica, obrigado pela contribuição!

  7. Maico diz:

    Caio é muito bom ter acesso a todas as pastas que estão dentro do nossos sistema operacional, afinal pagamos por ele e devíamos ter acesso total a todos os diretórios, mas reparei que esse procedimento nos da acesso apenas a pasta WindowsApp e não nos dá acesso total as subpastas, tem uma maneira de termos total acesso a pasta e suas subpastas?

  8. luiz wenner diz:

    Como faço para ter acesso total a todas as sub pastas?
    tipo acesso para gravar, excluir e modificar ???

  9. joao paulo diz:

    faz um tutorial para windows 8.1 por favor?

  10. francivaldo loiola diz:

    será que tendo acesso a pasta daria pra instalar o whatsapp

  11. matheus diz:

    Quando eu tento pesquisar no explorador de arquivos o comando %ProgramFiles%\WindowsApps apareçe “o windows nao pode localizar ‘C:%ProgramFiles%\WindowsApps’.verifique a ortografia e tente novamente. O que eu faço?????

  12. Ricardo564 diz:

    oi ,funcionou direitinho o/

    mas como eu achava q o conteudo dessa pasta era só relacionado e jogos da loja ,tive abrilhante ideia de deletar tudo ,agora a loja ,tempo … e talz nem abrem mais ^^
    tenham muito cuidado =/
    sera q tem como recuperar ,ou sóreinstalando o windows agora ?

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Pode usar estas etiquetas HTML e atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>