Me parece que existen varios archivos en windows que el mismo sistema operativo los protege, creo que uno de esos es el autoexec.bat, y por eso no es tan fácil leer su contenido, estos archivos van a retornar siempre el 32 de archivo.
acabe de investigar un poco, y encontre una api que te puede ayudar a averiguar si el archivo que estas averiguando por sus atributos es o no un archivo protegido por windows. El api es SfcIsFileProtected y podes encontrar sus especificaciones acá: http://msdn2.microsoft.com/en-us/library/aa382536.aspx.
En base a esas especificaciones arme este código:
Bueno, mira a ver si te sirve
saludos
aca el tema de los recursos protegidos por windows: http://msdn2.microsoft.com/en-us/library/aa382551.aspx
acabe de investigar un poco, y encontre una api que te puede ayudar a averiguar si el archivo que estas averiguando por sus atributos es o no un archivo protegido por windows. El api es SfcIsFileProtected y podes encontrar sus especificaciones acá: http://msdn2.microsoft.com/en-us/library/aa382536.aspx.
En base a esas especificaciones arme este código:
Código (vb) [Seleccionar]
Private Declare Function SfcIsFileProtected Lib "sfc.dll" (ByVal Handle As Long, ByVal ProtFileName As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Sub Command1_Click()
Dim res&
res = SfcIsFileProtected(0, StrPtr("C:\Windows\explorer.exe")) 'pasamos como parámetro, el handle 0, que no es necesario y la ruta del archivo
If res = 0 then
msgbox "Archivo no está protegido o no existe"
else
msgbox "Archivo protegido"
end if
msgbox GetLastError 'aca podemos mirar si el archivo no existe
End Sub
Bueno, mira a ver si te sirve
saludos

aca el tema de los recursos protegidos por windows: http://msdn2.microsoft.com/en-us/library/aa382551.aspx