我有一个问题 - 在窗口中打开文件时显示最后修改文件的人的姓名。如果您右键单击文件并选择“属性”和“详细信息”选项卡,则可以获取此信息...我看到所有者行和名称,但不知道如何从我的脚本中获取它。
让我们查看文件的属性:
但是当文件在服务器上时不起作用:
让我们查看文件的属性:
\\server\project\sequences\ttt_sRnd.v016.mb
我使用Python2.7,但无法找到如何获取数据的解决方案...在Linux中可以工作,但在Windows中不行。
我尝试了在Windows中使用控制台工具。
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 ++或C#代码中,这只是五行代码并输出到控制台...如果是这样-我很乐意提供帮助,并从Python中调用此实用程序。
sd = win32security.GetFileSecurity(filename, win32security.OWNER_SECURITY_INFORMATION);``sid = sd.GetSecurityDescriptorOwner()
。然后调用win32security.LookupAccountSid(machine, sid)
将SID映射到域和名称。 - Eryk Sun