GetUserNameA не получает последнее имя пользователя - PullRequest
1 голос
/ 22 октября 2019

У меня есть функция, которая использует Windows API для получения текущего имени пользователя Windows (https://support.microsoft.com/en-nz/help/152970/visual-basic-procedure-to-get-current-user-name).

Private Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

' Main routine to Dimension variables, retrieve user name.
Public Function WindowsUserName() As String

     ' Dimension variables
     Dim lpBuff As String * 25
     Dim ret As Long, UserName As String

     ' Get the user name minus any trailing spaces found in the name.
     ret = GetUserName(lpBuff, 25)
     WindowsUserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

End Function

Проблема: если я переименовал пользователя Windows (в Windows 10), эта функция всегдаполучить старое имя, даже если я войду с новым именем.

Есть ли способ получить последнее имя пользователя в VBA?

Обновлено: в нескольких комментариях имя учетной записи изменилось в ControlПанель - это отображаемое имя, а не имя пользователя. Теперь вернемся к моему вопросу: есть ли способ получить последнее имя DISPLAY в VBA?

1 Ответ

0 голосов
/ 29 октября 2019

Существуют некоторые различия в управлении учетными записями пользователей между сборками ОС 18362.356 и 18362.418. (Есть некоторые другие версии между этими двумя. Я не тестировал эти версии.)

В OS Build 18362.356 вы можете увидеть нижеприведенный интерфейс и настройки. Вы можете изменить имя пользователя через Control Panel\User Accounts\User Accounts -> Manage User Accounts -> Properties. Либо вы изменяете другое имя пользователя учетной записи как администратор, либо меняете имя пользователя, вошедшего в систему. После перезапуска вы можете получить новое имя пользователя, используя GetUserName API или команду set username.

enter image description here

В сборке ОС 18362,418 Вы можете увидеть ниже интерфейс и настройки. Судя по вашему описанию, вы, кажется, используете эту версию сборки и в результате этого проблема. Я также могу воспроизвести эту проблему в этой версии сборки.

enter image description here

enter image description here

enter image description here

enter image description here

В OS Build 18362.449 имеет тот же пользовательский интерфейс и настройки с 18362.356, как я показал выше, иЯ не могу воспроизвести эту проблему в этой версии сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...