Se ha documentado el comportamiento. Desde la sección Observaciones en el tema Biblioteca MSDN:
Si el archivo descrito en el parámetro path no existe, este método devuelve 12:00 medianoche, 1 de enero de 1601 AD (CE) Hora Universal Coordinada (UTC), ajustado a la hora local.
La excepción que obtienes al pasar una cadena vacía es una que se genera mediante un código que comprueba si la cadena pasada es una ruta válida. Lo cual es justo, eso sería un error en el programa.
El código es explícito, por lo que no fue realizado por supervisión o por error. Utiliza la función API FindFirstFile() para localizar el archivo. Si eso falla, verifica el error de Windows. Y explícitamente ignora los errores "Archivo no encontrado", "Ruta no encontrada" y "Conducir ocupado".
Tenga en cuenta que las soluciones que se ofrecen que utilizan File.Exists en realidad no previenen este problema. Windows es un sistema operativo multitarea. Su cadena puede ser eliminada inmediatamente después de la llamada Existe y otro proceso puede eliminar el archivo. Cuando su hilo recupere la CPU, igual obtendrá la fecha falsa.
La única manera garantizada de obtener una fecha precisa es abrir primero el archivo para que nadie pueda eliminar el archivo debajo de usted. Lo que creo que explica por qué el método se comporta como lo hace. Los diseñadores del framework estaban atrapados entre una roca y un lugar duro. Si primero hubieran abierto el archivo, se habrían arriesgado a que otros programas bombardeen un error de intercambio de archivos. Si no abren el archivo primero, se arriesgan al bombardeo de su programa al azar y con poca frecuencia. Extremadamente difícil de diagnosticar. Al tener que elegir entre dos opciones desagradables, eligieron la que no bombardea nada.
Anyhoo, confírmelo mediante la apertura del archivo.
Interesante. Me pregunto si alguien puede pensar en algún otro método en ese espacio de nombres que use el mismo patrón. –
Interesante, marcado :) – RvdK
Buena pregunta. Dudo que pueda haber una respuesta que no sea "esto es por diseño, tendrías que preguntarle a Microsoft" aunque ... – Daan