¡Nos volvemos locos en el siguiente problema de control de acceso! He buscado en Google alto y bajo, y no puedo encontrar nada pertinente. Cualquier ayuda apreciada.
Tengo una netbook de Windows 7 Starter Edition. Tiene dos usuarios, USER1 y USER2. Ambos son no administradores. Ambos tienen una contraseña. Es una caja estándar sin nada inusual.
USER1 crea un archivo, por ejemplo, en su escritorio, y luego le da a USER2 el control total de ese archivo. Por ejemplo:
===================================================
NOTE: REPLACE ALL INSTANCES OF "USER1" AND "USER2"
IN TEST.BAT AND TEST.VBS WITH YOUR OWN ACCOUNT NAMES
====================================================
TEST.BAT
cd C:\Users\%username%\Desktop
echo Hello World > TEST.OUT
icacls.exe TEST.OUT /grant "USER2:(F)"
icacls.exe TEST.OUT
pause
exit
El USUARIO1 luego se desconecta, el USUARIO2 inicia sesión e intenta acceder a ese archivo con el objeto COM SCRIPTING.FILESYSTEMOBJECT:
TEST.VBS
option explicit
const TESTFILE = "C:\Users\USER1\Desktop\TEST.OUT"
dim file
with createobject ("scripting.filesystemobject")
'//ALL NEXT WORK:
msgbox .fileexists (TESTFILE),, "EXISTS?"
set file = .getfile (TESTFILE)
msgbox file.attributes,, ".ATTRIBUTES"
msgbox file.path,, ".PATH"
with .opentextfile (TESTFILE, 1, false)
msgbox .readall,, "CONTENT!"
end with
end with
' *** BUT *** (note: FILE variable is still fine here)
on error resume next
'// FAILS RUNTIME ERROR 5, ACCESS DENIED!
msgbox file.size,, ".SIZE"
msgbox err.number & ": " & err.description,, "SIZE"
'// FAILS RUNTIME ERR 53, NO FILE!
msgbox file.datecreated,, ".DATECREATED"
msgbox err.number & ": " & err.description,, ".DATECREATED"
on error goto 0
wscript.quit
En otras palabras, USER2 puede ver el archivo, leer su contenido y mostrar ciertos atributos, pero no los atributos todos , por ejemplo. TAMAÑO!
USER2 no tiene acceso directo a las carpetas C: \ Users \ USER1 y C: \ Users \ USER1 \ Desktop. Pero está claramente atravesando esas carpetas, para llegar al archivo. Si no atravesaba esas carpetas, no podría leer el contenido del archivo.
Así que mis preguntas son:
(1) ¿Por qué puede USER2 acceder a algunos pero no a todos los atributos del archivo de prueba?
(2) ¿Cómo puede USER2 acceder al atributo .SIZE del archivo de prueba?
También intenté acceder al tamaño del archivo usando WMI CIM_DataFile, pero la consulta relevante simplemente no ve el archivo.
¡Siento que me estoy perdiendo algo obvio!
TIA