COPIAR ARQUIVOS PARA PASTAS DO WINDOWS

JULIOTERRANOVA 04/08/2014 20:29:39
#440181
para proteção de um programa tenho q enviar arquivos para uma pasta do sistema para ficar mais escondida mas não consigo pq da erro falando q o acesso ao caminho foi negado, tentei:

Dim ppaa As String = Environment.SystemDirectory

File.Copy([Ô]c:\- VA\1.mp4[Ô], ppaa + [Ô]ff.oo[Ô])

E também

My.Computer.FileSystem.CopyFile([Ô]c:\- VA\1.mp4[Ô], ppaa + [Ô]ff.oo[Ô])


Li sobre o:
Imports System.Security.Permissions

Mas não entendi como usar, alguém sabe como posso copiar arquivos para pastas do sistema com o vb.net?

Obrigado
NICKOSOFT 05/08/2014 08:24:08
#440195
qnd desenvolvi um joguinho pros alunos aki da escola, quis colocar uma lista dos melhores tempos pra criar a disputa, a solucao foi salvar o arquivo no documentos do usuario, unico lugar q vai tranquilo mesmo usuario sendo todo limitado.....pense nisso
OCELOT 05/08/2014 09:47:09
#440199
Resposta escolhida
Você nunca deve salvar nenhuma informação em pastas de sistema.

Os usuários nem sempre vão ter permissão para gravar informações nestas pastas, principalmente nas ultimas versões do Windows em que o UAC garante que os programas rodem sem permissões de administrador por padrão, e obrigar o usuário a rodar um programa como administrador também não é uma opção viável já que existe usuário que não podem rodar programas como administrador de forma alguma.

O System.Security.Permissions não tem nada a ver com isso também, já que o problema ali é permissão do usuário logado no Windows e não do Trust Level do programa, que provavelmente já está rodando como Full Trust, que é o padrão quando um programa roda localmente.

Existem os lugares recomendados para se gravar dados, para o usuário logado seria a pasta Documentos, que pode ser pega com o

Dim pastaDocumentos As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal)

Ou a pasta de dados locais, que no caso do Windows Vista para cima se não me engano fica em [ô]C:\Users\<Nome Do Usuário>\AppData\Local[ô]

Dim appData As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

E existe também a pasta de dados comuns, que é compartilhada entre todos os usuários do Windows, que no caso do Vista para cima é a [ô]C:\ProgramData[ô] e pode ser pega com o comando

Dim commonAppData As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Em todos os casos é recomendado criar uma subpasta para você dentro destas pastas, no seu caso eu diria que o ideal seria usar a ultima, a pasta de ProgramData fica oculta por padrão e você pode criar uma pasta dentro dela com um nome qualquer, só isso deve dificultar que um usuário médio encontre o arquivo.
NICKOLASCARLOS 05/08/2014 15:06:21
#440208
Tente rodar ele como administrador
Tópico encerrado , respostas não são mais permitidas