Este código PInvoke é correto e confiável?
Emessa questã Procurei uma solução simples para desbloquear arquivos. Graças a todos os comentários e respostas, encontrei uma solução simples por PInvokingDeleteFile
.
Funciona, mas como nunca usei operações de arquivo através do PInvoke (Win32), não sei se existem algumas armadilhas ou se existe outro método de chamarDeleteFile
para excluir o fluxo alternativo de um arquiv
O que eu também não sei é se tenho que encerrar a chamada em uma tentativa / captura ou se é suficiente apenas olhar o resultado booleano. Nos meus testes, nenhuma exceção foi levantada, mas não sei o que acontecerá no mundo rea
public class FileUnblocker {
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DeleteFile(string name );
public bool Unblock(string fileName) {
return DeleteFile(fileName+ ":Zone.Identifier");
}
}
Este código parece confiável?
Atualiza
Eu havia postado um método incompleto (o método de desbloqueio não concatenava o literal "Zone.Identifier" no nome do arquivo). Corrigi isso agora, desculpe.