Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
282 views
in Technique[技术] by (71.8m points)

python - How to get the owner of the file in the windows 7?

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:

\serverprojectsequencestt_sRnd.v016.mb

enter image description here

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:emp>dir /Q file.ext
11/06/2004  15:33           290,304 COMPuser       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:

\serverprojectsequences>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:emp>subinacl.exe /file file.ext /display=owner
/owner             =compuser

C:emp>subinacl.exe /file \serverprojectsequencesfile.ext  /display=owner
\serverprojectsequencesfile.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:emp>takeown /F file.ext
SUCCESS: The file (or folder): "C:empfile.ext" now owned by user "COMPuser".

\serverprojectsequences>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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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_locationsomefile.txt")

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...