5

В Windows XP я использовал сценарий VBS после использования клиентского компьютера, чтобы установить учетную запись пользователя в качестве последнего вошедшего в систему пользователя.

К сожалению, скрипт больше не работает в Windows 7. (В результате некоторые пользователи блокируют мою учетную запись, когда они пытаются войти в систему и обнаруживают, что их пароль не совпадает с моим!)

Вот пример сценария, который я использовал:

http://www.itsupportguides.com/vbs-scripts/using-vbs-to-set-the-last-user-logged-on-windows-xp

РЕДАКТИРОВАТЬ: Дополнительная информация о нашей среде

Наше окружение:

  • UAC включен
  • Войдите в систему как учетная запись itsupport, которая является членом группы локальных администраторов.
  • На всех системах теперь установлена Windows 7 Enterprise
  • Все системы объединены в домен Active Directory

3 ответа3

4

Спасибо тем, кто помог с этим вопросом.

После некоторых дальнейших исследований я обнаружил, что Windows 7 не использует тот же ключ реестра «Winlogon» для хранения последнего зарегистрированного пользователя, а также использует его

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\LastLoggedOnUser

Вторая проблема, с которой я столкнулся, - разрешить запуск сценария VBS от имени опытного пользователя (администратора) без использования runas или командной строки с повышенными привилегиями.

После некоторых проб и ошибок я создал следующий скрипт, который успешно изменяет последнего вошедшего в систему пользователя для рабочих станций Windows 7, добавленных в домен.

Надеюсь, что другие здесь найдут это полезным - я знаю, я буду!

Установить последний вход - Win7.vbs

    '--------------
'Start of UAC workaround code

If WScript.Arguments.length =0 Then
  Set objShell = CreateObject("Shell.Application")

  objShell.ShellExecute "wscript.exe", Chr(34) & _
  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else

'--------------
'Start of code

    dim WSHShell
    Set WSHShell = Wscript.CreateObject("WScript.Shell")
    dim strRegKey
    strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
    strRegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\"

    StrUser = InputBox("Please enter in username," & vbCrLf & vbCrLf & "e.g. joe.local", "Set Last logged on", "UserName")
    StrDomain = InputBox("Please enter in domain for logon," & vbCrLf & vbCrLf & "e.g. DOMAIN", "Set Logon Domain OR leave blank if a local user account")

    If StrDomain = "" then
         StrDomain = "."
       Else
    End If

    wshShell.RegWrite strRegKey & "LastLoggedOnUser", StrDomain & "\" & StrUser, "REG_SZ"

        WScript.Echo "Setup Completed. Please restart the computer to complete the process"

    '--------------
    'End of code


    '--------------
    'End of UAC workaround code

    End If

Полный источник: Windows 7 - сценарий VBS для изменения последнего пользователя, вошедшего в систему

2

Я предполагаю, что Windows 7 настраивает реестр через некоторое время после запуска скрипта. Вероятно, когда вы выйдете из системы. Вы можете сделать что-то вроде сохранения имени пользователя в реестре под пользовательским ключом (HKLM\Software\MyCompany довольно распространен). Затем вы создаете скрипт выключения или запуска, который выполняет:

  1. Прочитайте имя пользователя из значения в пользовательском ключе. Если оно пустое, ничего не делайте и выходите.
  2. Установите значения HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WINLOGON\ чтобы использовать это имя пользователя.
  3. Удалите значение имени пользователя в пользовательском разделе реестра.

Это зависит от того, когда Windows заполняет этот раздел реестра и как он определяет последнего вошедшего в систему пользователя. Вы можете использовать удаленный реестр (regedit или reg.exe) для определения данных в значениях WinLogon.

0

Я провел некоторое тестирование на своем компьютере с Win 7 x64 Enterprise. Сценарий может быть запущен пользователем без прав администратора, и все подсказки отображаются правильно. Хитрость заключается в том, чтобы запустить скрипт под учетной записью с правами локального администратора И с запрошенным токеном административного доступа (по умолчанию пользователь локального администратора не имеет полных прав администратора до запроса).

Чтобы правильно запустить ваш скрипт, запустите cmd с правами администратора («Пуск», введите CMD в меню «Пуск», щелкните правой кнопкой мыши cmd и выберите «Запуск от имени администратора»), а затем запустите ваш скрипт из этого окна CMD.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .