Para una solución de una línea (siempre que el usuario actual tenga acceso para cambiar los atributos del archivo mencionado) así es como lo haría:
VB.Net
Shell("attrib file.txt -r")
el signo negativo significa ay remove
el r
es de solo lectura. si también desea eliminar otros atributos, lo haría:
Shell("attrib file.txt -r -s -h -a")
Eso eliminará los atributos de solo lectura, archivo de sistema, oculto y archivo.
Si desea devolver estos atributos, así es como:
Shell("attrib file.txt +r +s +h +a")
El orden no importa.
C#
Process.Start("cmd.exe", "attrib file.txt +r +s +h +a");
Referencias