별도의 프로세스가 완료되면 파일 소유자에게 전자 메일을 보내기위한 스크립트를 작성하고 있습니다. 나는 시도했다 :Python의 Windows 파일 메타 데이터보기
import os
FileInfo = os.stat("test.txt")
print (FileInfo.st_uid)
이것의 출력은 소유자 ID 번호이다. 필요한 것은 Windows 사용자 이름입니다.
별도의 프로세스가 완료되면 파일 소유자에게 전자 메일을 보내기위한 스크립트를 작성하고 있습니다. 나는 시도했다 :Python의 Windows 파일 메타 데이터보기
import os
FileInfo = os.stat("test.txt")
print (FileInfo.st_uid)
이것의 출력은 소유자 ID 번호이다. 필요한 것은 Windows 사용자 이름입니다.
파일 메타 데이터 검색을 중지하고 파일 보안을 찾기 시작한 후 찾고자하는 바를 정확히 발견했습니다.
import tempfile
import win32api
import win32con
import win32security
f = tempfile.NamedTemporaryFile()
FILENAME = f.name
try:
sd = win32security.GetFileSecurity (FILENAME,win32security.OWNER_SECURITY_INFORMATION)
owner_sid = sd.GetSecurityDescriptorOwner()
name, domain, type = win32security.LookupAccountSid (None, owner_sid)
print "I am", win32api.GetUserNameEx (win32con.NameSamCompatible)
print "File owned by %s\\%s" % (domain, name)
finally:
f.close()
무자비 내가 FileInfo.st_uid 항상 창에서 0을 반환 생각
http://timgolden.me.uk/python-on-windows/programming-areas/security/ownership.html
내가 가진 유일한 기회는 pywin32 extensions을 사용하고 직접 윈도우에 질문하는 것입니다.
기본적으로 사용자는 look on msdn how to do it in c++이며 해당 pywin32 기능을 사용하십시오.
from win32security import GetSecurityInfo, LookupAccountSid
from win32security import OWNER_SECURITY_INFORMATION, SE_FILE_OBJECT
from win32file import CreateFile
from win32file import GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL
fh = CreateFile(__file__, GENERIC_READ, FILE_SHARE_READ, None, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, None)
info = GetSecurityInfo(fh, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION)
name, domain, type_id = LookupAccountSid(None, info.GetSecurityDescriptorOwner())
print name, domain, type_id
에서 ganked? – Mark