En this question He buscado una solución simple para desbloquear archivos. Gracias a todos los comentarios y respuestas, he encontrado una solución simple mediante PInvoking DeleteFile
.¿Este código de PInvoke es correcto y confiable?
Funciona, pero como nunca he usado operaciones de archivos a través de PInvoke (Win32), no sé si hay algún inconveniente o si hay otro método para llamar al DeleteFile
para eliminar la secuencia alternativa de un archivo .
Lo que tampoco sé es si tengo que envolver la llamada en un try/catch o si es suficiente con 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");
}
}
¿Este código es confiable?
actualización
que había publicado un método incompleto (el método de desbloqueo no concatenar los "Zone.Identifier" literal al nombre del archivo). Lo he corregido ahora, lo siento.
Para quien pasó por y ciegamente downvoted respuestas: tener la cortesía de explicar por qué la respuesta fue incorrecta. –
@Chris En realidad, me gustaría saber quién votó 2 respuestas que: 1) No hizo nada más que dar firmas P/Invocar equivalentes a eso en la pregunta, y en un caso utilizando cadenas Ansi y 2) No respondió la pregunta de cualquier manera. –
Lo hice, y nunca me atraparás. Muah ja ja ja. > :) –