我有一个问题 - 在打开文件的窗口中显示上次修改文件的人的名字。如果您右键单击该文件并选择属性和选项卡详细信息...此信息可用。我看到所有者行和名称,但我不知道如何从我的脚本中获取此信息。
让我们看一下文件中的属性:
\\server\project\sequences\ttt_sRnd.v016.mb
我使用Python2.7并且我找不到解决方案如何获取数据......在Linux中它的工作原理。但不是在窗户。 我试图控制实用程序窗口。
dir / Q - 它处理本地文件
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
但在服务器上的文件时不起作用:
\\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
这很奇怪,因为在资源管理器中我可以看到数据并且可以使用
好吧,试试另一个实用程序subinacl.exe
它是相同的 - 处理本地文件而不是在服务器上使用文件:
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.
我尝试takeown
并且完全相同 - 仅适用于本地文件:
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.
它可能在Windows中有其他功能吗? 我甚至准备自己编写这样的工具并从python中调用它。但我不知道如何获取这些信息?告诉我如何在任何编程语言中崩溃问题?我相信在C /С++或C#中代码是5行的问题,输出到控制台...如果是这样 - 什么会很乐意提供帮助,然后我将从python导致这个实用程序
答案 0 :(得分:2)
python 2.7
尝试使用win32security库中的函数(GetFileSecurity和LookupAccountSid),您将获得有关所有者的信息
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")