2017-10-28 146 views
3

我想用Python 3.7获取系统用户的登录时间。我已经尝试过用于Python的win32net和平台模块,但是,函数没有在平台模块中定义,而Win32net与Python 3和更多不兼容。我曾尝试下面的代码:Python 3.7:如何获取Windows用户登录时间?

import platform 
platform.uname() 
import platform 
os_name = platform.uname()[0].lower() 
if os_name == "windows": 
    get_win_login_time() 
elif os_name.endswith("nix"): 
    get_nix_login_time() 
+3

Python 3.7仍处于alpha版本。你现在可能想要抱着你的马并回到3.6。 –

+0

@MartijnPieters哈哈!是!我现在使用Django和Jupyter的Python 3.6。否则,在3.7上,我将始终在StackOverflow上而不是在Python上处于活动状态。 –

回答

1

试试这些(第一安装win32com.client和子模块):

import win32com.client, time 

strComputer = "." 
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator") 
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2") 
colItems = objSWbemServices.ExecQuery("SELECT * FROM Win32_NetworkLoginProfile") 



def Convert_to_human_time(dtmDate): 

    strDateTime = "" 

    if dtmDate[4] == 0: 
     strDateTime = dtmDate[5] + '/' 

    else: 
     strDateTime = dtmDate[4] + dtmDate[5] + '/' 

    if dtmDate[6] == 0: 
     strDateTime = strDateTime + dtmDate[7] + '/' 

    else: 
     strDateTime = strDateTime + dtmDate[6] + dtmDate[7] + '/' 
     strDateTime = strDateTime + dtmDate[0] + dtmDate[1] + dtmDate[2] + dtmDate[3] + " " + dtmDate[8] + dtmDate[9] + ":" + dtmDate[10] + dtmDate[11] +':' + dtmDate[12] + dtmDate[13] 

    return strDateTime 


for objItem in colItems: 

    if objItem.Name is not None: 
     print("Name: " + str(objItem.Name)) 

    if objItem.LastLogon is not None: 
     print("Last Logon (Normal Format): " + str(objItem.LastLogon)) 
     print("Last Logon (Human Readable Format): " + Convert_to_human_time(objItem.LastLogon)) 

    if objItem.LastLogoff is not None: 
     print("Last Logoff (Normal Format): " + str(objItem.LastLogoff)) 
     print("Last Logoff (Human Readable Format): " + Convert_to_human_time(objItem.LastLogoff)) 

    if objItem.LogonHours is not None: 
     print("Logon Hours: " + str(objItem.LogonHours)) 

    if objItem.LogonServer is not None: 
     print("Logon Server: " + str(objItem.LogonServer)) 

    if objItem.NumberOfLogons is not None: 
     print("Number Of Logons: " + str(objItem.NumberOfLogons)) 

另一种方式:

from subprocess import check_output 
import sys 

get_result = check_output("wmic netlogin get name, fullname, lastlogon", shell=True, stderr=False) 

print(get_result) 

clean_result = str(get_result).lstrip("b'").rstrip("'").replace("\\r\\r\\n", "\n").replace('\n\n', '\n').split('\n')[2:-1] 

for items in clean_result: 

    print(items.lstrip().rstrip()) 

好运...

+0

谢谢!第二个代码运行完美。只是显示格式稍微不对齐。我能够得到我想要的! 谢谢! –

+0

@Himanshu_Singh_PM:你可以打我吗? :) – DRPK

相关问题