Usuário com melhor resposta
Acesso negado ao criar um arquivo

Pergunta
-
Gostaria de salvar uma imagem em um determinado local
Quando eu uso o SaveFileDialog o código funciona
Ex.:
Dim sfd As New SaveFileDialog()
sfd.Filter = "PNG files (*.PNG)|*.png|All Files (*.*)|*.*"
Dim enc = New PngEncoder()
If CBool(sfd.ShowDialog()) Then
Using stream As FileStream = sfd.OpenFile
Dim image = Imager.ToImg(capturedImage.ImageSource)
enc.Encode(image, stream)
stream.Close()
End Using
End IfMas quando uso File.Create ele aparece o seguinte código(Imagem anexada)
Messagem do Erro(File operation not permitted. Access to path 'C:\Users\rbjunior\Desktop\teste.png' is denied.)
Ex.:
Dim enc = New PngEncoder()
Using stream As FileStream = File.Create("C:\Users\rbjunior\Desktop\teste.png")
Dim image = Imager.ToImg(capturedImage.ImageSource)
enc.Encode(image, stream)
stream.Close()
End Using
Respostas
-
Isso funciona assim por questão de segurança. Em aplicações Silverlight não é permitido manipular arquivos diretamente em qualquer pasta sem a intervenção do usuário, ou seja, sua aplicação não pode salvar onde quiser. Você pode manipular arquivos sem problemas no IsolatedStorage, que é uma área reservada pelo Silverlight apenas para o seu aplicativo.
A única forma de contornar isso é fazer sua aplicação ser executada como uma aplicação confiável (MSDN: trusted applications).
Aplicações feitas em Silverlight 4 só terão acesso às pastas Meus Documentos, Minhas Músicas, Minhas Imagens e Meus Vídeos do usuário atual, mesmo em modo trusted (acho que o desktop também é acessível, mas não tenho certeza).
Aplicações feitas em Silverlight 5 em modo trusted têm acesso à qualquer arquivo do computador.
Além disso, em Silverlight 4 só é possível criar aplicações trusted em modo Out of Browser, mas em Silverlight 5 também é possível criar aplicações trusted In Browser, mas deve ser feita uma alteração no registry do computador do usuário (pode ser feito diretamente ou via Group Policy). Além disso, qualquer aplicação trusted DEVE ser assinada com um certificado digital válido emitido por uma agência certificadora (aplicações trusted não assinadas só funcionam em computadores de desenvolvimento)
Atenciosamente,
Kelps Leite de Sousa | MVP Silverlight
blog: http://kelps.net
twitter : http://twitter.com/kelps
Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.- Marcado como Resposta Kelps Leite de SousaModerator quarta-feira, 7 de janeiro de 2015 12:56
Todas as Respostas
-
Isso funciona assim por questão de segurança. Em aplicações Silverlight não é permitido manipular arquivos diretamente em qualquer pasta sem a intervenção do usuário, ou seja, sua aplicação não pode salvar onde quiser. Você pode manipular arquivos sem problemas no IsolatedStorage, que é uma área reservada pelo Silverlight apenas para o seu aplicativo.
A única forma de contornar isso é fazer sua aplicação ser executada como uma aplicação confiável (MSDN: trusted applications).
Aplicações feitas em Silverlight 4 só terão acesso às pastas Meus Documentos, Minhas Músicas, Minhas Imagens e Meus Vídeos do usuário atual, mesmo em modo trusted (acho que o desktop também é acessível, mas não tenho certeza).
Aplicações feitas em Silverlight 5 em modo trusted têm acesso à qualquer arquivo do computador.
Além disso, em Silverlight 4 só é possível criar aplicações trusted em modo Out of Browser, mas em Silverlight 5 também é possível criar aplicações trusted In Browser, mas deve ser feita uma alteração no registry do computador do usuário (pode ser feito diretamente ou via Group Policy). Além disso, qualquer aplicação trusted DEVE ser assinada com um certificado digital válido emitido por uma agência certificadora (aplicações trusted não assinadas só funcionam em computadores de desenvolvimento)
Atenciosamente,
Kelps Leite de Sousa | MVP Silverlight
blog: http://kelps.net
twitter : http://twitter.com/kelps
Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.- Marcado como Resposta Kelps Leite de SousaModerator quarta-feira, 7 de janeiro de 2015 12:56
-