问题
I have a problem - in the window when the file is opened to show the name of the one who last modified the file. This information is available if you right-click on the file and select Properties and tab Details... i see Owner line and name but i dont know how to get this from my script.
lets see properties on file:
\\server\project\sequences\ttt_sRnd.v016.mb
I use Python2.7 and and I do not find the solution how to get the data... in linux its worked. but not in windows. I tried to console utilities windows.
dir /Q - its worked on local files
C:\temp>dir /Q file.ext
11/06/2004 15:33 290,304 COMP\user file.ext
1 File(s) 290,304 bytes
0 Dir(s) 316,720,226,304 bytes free
but don't worked when file on server:
\\server\project\sequences\>dir /Q file.ext
21/12/2016 16:00 66,372 ... file.ext
1 File(s) 66,372 bytes
0 Dir(s) 52,561,190,912 bytes free
it's strange, because in the explorer I can see the data and they are available
well, try another utility subinacl.exe
its the same - worked on local files and not worked with file on server:
C:\temp>subinacl.exe /file file.ext /display=owner
/owner =comp\user
C:\temp>subinacl.exe /file \\server\project\sequences\file.ext /display=owner
\\server\project\sequences\file.ext - CreateFile Error : 1314 A required privilege is not held by the client.
i try takeown
and all the same - work only on local files:
C:\temp>takeown /F file.ext
SUCCESS: The file (or folder): "C:\temp\file.ext" now owned by user "COMP\user".
\\server\project\sequences\>takeown /F file.ext
ERROR: Access is denied.
It may have something else utility in windows? I am ready even to write such a tool myself and call it from python. but I have no idea how to get this information? tell me how to crash problem in any programming language? I believe that in C/С++ or C# code is a matter of the 5-lines with the output to the console ... if so - what will be glad to help, and then I will cause this utility from python
回答1:
python 2.7
try to use the functions (GetFileSecurity and LookupAccountSid) from the win32security library and you will obtain information about owner
import win32security
def GetOwner(filename):
f = win32security.GetFileSecurity(filename, win32security.OWNER_SECURITY_INFORMATION)
(username, domain, sid_name_use) = win32security.LookupAccountSid(None, f.GetSecurityDescriptorOwner())
return username
print GetOwner(r"\\some_shared_location\somefile.txt")
来源:https://stackoverflow.com/questions/41280639/how-to-get-the-owner-of-the-file-in-the-windows-7