2014-02-13 51 views
2

我試圖獲取用戶的全名。不是登錄名,而是Windows 7中開始菜單右上角顯示的全名。它可能只顯示爲活動目錄設置中的全名。如何在python中獲取Windows用戶的全名?

os.environ['USERNAME'] 
win32api.GetUserName() 

這兩個都返回登錄名。我如何獲取用戶的全名?

+0

是相同3作爲常量您是否嘗試過的其中一個選項? http://stackoverflow.com/questions/13654122/how-to-make-python-get-the-username-in-windows-and-then-implement-it-in-a-script –

+0

@NoelEvans那些返回登錄名字太 –

回答

4

谷歌搜索有一點讓我this link

和驗證碼:

import ctypes 

def get_display_name(): 
    GetUserNameEx = ctypes.windll.secur32.GetUserNameExW 
    NameDisplay = 3 

    size = ctypes.pointer(ctypes.c_ulong(0)) 
    GetUserNameEx(NameDisplay, None, size) 

    nameBuffer = ctypes.create_unicode_buffer(size.contents.value) 
    GetUserNameEx(NameDisplay, nameBuffer, size) 
    return nameBuffer.value 

測試,適用於Windows XP


正如評論指出由OP這裏,pywin32包裝此相同的API調用變爲更簡單的功能:

win32api.GetUserName(3) 

GetUserName指向ctypes.windll.secur32.GetUserNameExW,並3從​​

+2

只是想通了,你也可以使用win32api.GetUserName(3)如果你有pywin32安裝 –

+2

偉大的一點。我已經更新了我的答案,以包括這個 – mhlester

+1

並鏈接到文檔。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms724435(v=vs.85).aspx。 EXTENDED_NAME_FORMAT解釋了此功能的不同參數。 –

相關問題