如何在Windows 7中获取文件的所有者?

时间:2016-12-22 10:11:44

标签: python c windows file owner

我有一个问题 - 在打开文件的窗口中显示上次修改文件的人的名字。如果您右键单击该文件并选择属性和选项卡详细信息...此信息可用。我看到所有者行和名称,但我不知道如何从我的脚本中获取此信息。

让我们看一下文件中的属性:

\\server\project\sequences\ttt_sRnd.v016.mb

enter image description here

我使用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导致这个实用程序

1 个答案:

答案 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")