"kai rosenthal" <[EMAIL PROTECTED]> wrote: > Hello, > > with ls -l on windows I get > -rw-r--r-- 1 500 everyone 320 Nov 09 09:35 myfile > > How can I get on windows with a standard python 2.2 (without windows > extensions) the information "500" and "everyone" (owner and group)? > Also I cannot use popen('ls -l'). > > With > import stat > stat_info = os.lstat(myfile) > owner = "%-8s" % stat_info.st_uid > group = "%-8s" % stat_info.st_gid > I get 0 for owner and group. > > Thanks for your hints, Kai >
You can get the owner by doing os.popen('dir /q') and parsing the output, but it is a string not a number (which I guess is why stat/lstat can't return a value). Internally the ownber and primary group are stored as security identifier (SID) values: a SID is a variable length structure. Running the CACLS command on a file will give you the full permission settings for that file. They are a lot more complex than the simple rwx settings from unix. e.g. C:\temp>cacls t.py C:\temp\t.py BUILTIN\Administrators:F NT AUTHORITY\SYSTEM:F MYPC\Duncan:F BUILTIN\Users:R C:\temp>cacls . C:\temp BUILTIN\Administrators:F BUILTIN\Administrators:(OI)(CI)(IO)F NT AUTHORITY\SYSTEM:F NT AUTHORITY\SYSTEM:(OI)(CI)(IO)F MYPC\Duncan:F CREATOR OWNER:(OI)(CI)(IO)F BUILTIN\Users:R BUILTIN\Users:(OI)(CI)(IO)(special access:) GENERIC_READ GENERIC_EXECUTE BUILTIN\Users:(CI)(special access:) FILE_APPEND_DATA BUILTIN\Users:(CI)(special access:) FILE_WRITE_DATA So far as I know, to get the primary group for a file you will need to call the win32 function GetSecurityInfo asking for the GROUP_SECURITY_INFORMATION. This will give you an appropriate security descriptor. See http://msdn2.microsoft.com/en-us/library/aa379561.aspx -- http://mail.python.org/mailman/listinfo/python-list