none
Acesso Negado ao sobrescrever imagem RRS feed

  • Pergunta

  • Estou tentando sobrescrever uma imagem, aparece uma mensagem de acesso negado. Já tentei várias coisas diferentes. Não sei como resolver o problema.

    O código que estou usando é o seguinte:

    { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Todos os Arquivos(*.*)|*.*|Arquivos de Imagem(*.png)|*.png"; dlg.FilterIndex = 0; if (dlg.ShowDialog() == DialogResult.OK) { string arquivo = dlg.FileName; Bitmap imagem = new Bitmap(dlg.FileName); pbLogo.Image = imagem; if (System.IO.File.Exists(Properties.Settings.Default.PastaOrigem + @"\Logo\LogoTipo.png")) { Properties.Settings.Default.LogoTipo = dlg.FileName; Properties.Settings.Default.Save(); Properties.Settings.Default.Reload(); File.Copy(dlg.FileName, Properties.Settings.Default.PastaOrigem + @"\Logo\LogoTipo.png", true); }

    quarta-feira, 14 de março de 2018 03:02

Respostas

  • Olá. Resolvi insatisfatoriamente. Consegui renomear a imagem de forma que o programa possa reutilizar o nome anterior para a nova. No entanto, não consegui sobrescrever a imagem, nem mesmo apagá-la via código, apenas renomear. Configurei o aplicativo para que apague o arquivo renomeado na próxima inicialização do mesmo, garantindo assim que a imagem não esteja aberta no programa, mas mesmo assim, não aceita sobrescrever, nem apagar, apenas renomear...

    quinta-feira, 29 de março de 2018 01:37

Todas as Respostas

  • roda seu aplicação como administrador, ou verifique as permissão nas pasta em que está a imagem. tenta ai
    quarta-feira, 14 de março de 2018 13:18
    Moderador
  • Bom dia, tentei rodar como administrador. Sem sucesso. O erro continua aparecendo. Me parece que o arquivo está aberto em outro processo. Não consigo entender qual, já que no momento de sobrescrever a imagem que aparecia no picturebox já foi alterada para outra imagem...

    A pasta que usei tem permissões de alteração sem problema.
    • Editado ValNeh quarta-feira, 14 de março de 2018 13:46
    quarta-feira, 14 de março de 2018 13:46
  • mas as exceção que está dando é "

    Acesso Negado ao sobrescrever imagem

    "?
    quarta-feira, 14 de março de 2018 14:08
    Moderador
  • Conferi o erro novamente e o que aparece é: O acesso ao caminho 'pasta' foi negado.
    quinta-feira, 15 de março de 2018 03:27
  • Sim. Ela é carregada no picturebox ao iniciar o form. Só que ela é substituida por outra.

    a ideia é que o usuário selecione outra e aí a antiga seja subtituida pela nova, copiando-a para a pasta padrão da aplicação. Aí tento sobrescrever para manter um nome padrão, mas com outra imagem. quando faço isso, a antiga já não está mais no picturebox. Tentei usar a função delete para apagar a imagem e aí copiar a nova, mas tbm não dá certo. configurei a aplicação para apagar a imagem que não é mais utilizada ao reiniciar o aplicativo, mas tbm não resolveu o problema...

    Não sei o que está bloqueando. Tbm utilizei um código fonte que busca processos que estejam ativos para o arquivo em questão, mas ele retorna que o arquivo está livre....

    Não faço ideia do que pode ser!

    quinta-feira, 15 de março de 2018 23:47
  • Tentei da forma como vc sugeriu, sem sucesso ...

                    if (dlg.ShowDialog() == DialogResult.OK)
                    {
                        string arquivo = dlg.FileName;
    
                        Bitmap imagem = new Bitmap(dlg.FileName);
    
                        pbLogo.Image = new Bitmap(imagem);
    
                        if (!System.IO.Directory.Exists(Properties.Settings.Default.PastaOrigem + @"\Logo"))
                        {
                            System.IO.Directory.CreateDirectory(Properties.Settings.Default.PastaOrigem + @"\Logo");
                            File.Copy(dlg.FileName, Properties.Settings.Default.PastaOrigem + @"\Logo\LogoTipo.png");
                        }
                        else
                        {
                            Properties.Settings.Default.LogoTipo = dlg.FileName;
                            Properties.Settings.Default.Save();
                            Properties.Settings.Default.Reload();
                            File.Copy(dlg.FileName, Properties.Settings.Default.PastaOrigem + @"\Logo\LogoTipo.png", true);
                        }
    

    Este é o código, o erro acontece sempre na última linha do trecho de código citado acima.

    segunda-feira, 19 de março de 2018 23:33
  • Na última

    quarta-feira, 21 de março de 2018 00:00
  • Boa tarde, ValNeh. Tudo bem?

    Conseguiu resolver o problema?

    Se ainda não, o que falta?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 28 de março de 2018 19:32
    Moderador
  • Olá. Resolvi insatisfatoriamente. Consegui renomear a imagem de forma que o programa possa reutilizar o nome anterior para a nova. No entanto, não consegui sobrescrever a imagem, nem mesmo apagá-la via código, apenas renomear. Configurei o aplicativo para que apague o arquivo renomeado na próxima inicialização do mesmo, garantindo assim que a imagem não esteja aberta no programa, mas mesmo assim, não aceita sobrescrever, nem apagar, apenas renomear...

    quinta-feira, 29 de março de 2018 01:37