¿Es este código PInvoke correcto y confiable?
Inesta pregunt He buscado una solución simple para desbloquear archivos. Gracias a todos los comentarios y respuestas, he encontrado una solución simple por PInvokingDeleteFile
.
Funciona, pero debido a que nunca he usado operaciones de archivos a través de PInvoke (Win32), no sé si hay algunas dificultades o si hay otro método para llamar aDeleteFile
para eliminar la secuencia alternativa de un archivo.
Lo que tampoco sé es si tengo que ajustar la llamada en un try / catch o si es suficiente solo para mirar el resultado booleano. En mis pruebas, no se plantearon excepciones, pero no sé qué sucederá en el mundo real.
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");
}
}
¿Parece confiable este código?
Actualiza
Había publicado un método incompleto (el método de desbloqueo no concatenaba el literal "Zone.Identifier" con el nombre del archivo). He corregido esto ahora, lo siento.