Я использовал, Добираются-ADUser и Добираются-ADComputer несколько раз, чтобы помочь диагностировать проблемы в системе.
Я видел несколько способов определить, какой пользователь зарегистрирован определенная машина через любой реестр, PsLoggedon.exe и другие сценарии, но так как я не действительно администратор сети, я часто получаю доступ запрещен. Который прекрасен, потому что я не действительно интересен в рытье настолько глубоко.
Все, в чем я нуждаюсь, должно так или иначе определить, у каких пользователей есть учетная запись (профиль) на машине (или какие машины имеют учетную запись пользователя), таким образом, я могу связаться с ними и помочь им каждый раз, когда исключение прибывает из их IP-адреса.
Нет ли абсолютно никакие отношения между этими двумя объектами out-of-the-box?
Нет абсолютно никакой связи между этими объектами "из коробки". Windows 8 / Windows Server 2012 представила концепцию атрибута схемы «первичный компьютер» Active Directory, но я очень сомневаюсь, что вы обнаружите, что он используется.
Получение авторизованного пользователя на удаленная машина - одна из тех вещей, которые звучат так, как будто это должно быть очень просто, но на практике это не так.
Я думаю, вам придется заручиться некоторой поддержкой со стороны вашего сетевого администратора чтобы надежно получить то, что вы ищете. Для удаленного запроса информации вошедшего в систему пользователя «обычными средствами» ( psloggedon
, запросы WMI, удаленный доступ к реестру) потребуется либо наличие прав локального администратора на удаленном компьютере, либо внесение изменений в по умолчанию предоставляет это право вашему контексту, не являющемуся администратором.
Чтобы перейти к разговору о «взломах»: я могу представить сценарий, в котором ваш обработчик исключений пытается перенаправить браузер пользователя на страницу, требующую аутентификации NTLM, и, если клиенты настроены на автоматическую попытку аутентификации с использованием учетных данных вошедшего в систему пользователя, вы можете «собрать» учетные данные таким образом. Я также мог видеть, как это может быть неправильно истолковано персоналом сетевого администрирования как атака на пользователей, поэтому я настоятельно рекомендую не делать этого.
Предположительно вы администрируете веб-приложение, но не являетесь частью персонала сетевого администрирования. . Если бы вы могли заставить администрацию сети купить присоединение вашего веб-сервера к домену, вы могли бы включить аутентификацию, после чего вы бы знали имя пользователя удаленного пользователя и вам не пришлось бы возиться с любым из этих IP-адресов. Если ваши клиенты правильно настроены, аутентификация также может происходить прозрачно.
Существующие профили на компьютере Windows перечислены в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
Он содержит подраздел для каждого профиля пользователя, а имя каждого подраздела идентифицирует соответствующего пользователя по идентификатору безопасности.
Вы можете «обнаружить» профили пользователей, перечислив подключи и переведя все SID пользователей в соответствующие им объекты учетных записей:
$profileList = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
# Retrieve subkeys that represent user profiles
$UserProfiles = Get-ChildItem $profileList |? {$_.Name -like "*S-1-5-21-*"}
foreach($Profile in $UserProfiles)
{
$ntAccType = [System.Security.Principal.NTAccount] -as [Type]
$userSid = ($Profile.Name-split"\\")[-1]
try{
# Attempt to translate the SID to an NTAccount object
(New-Object System.Security.Principal.SecurityIdentifier $userSid).Translate($ntAccType)
} catch {"Translating SID $userSid to Account failed"}
}