Re[2]: Получить аккаунт процесса, исполняемого на удаленной
От: Бабуин  
Дата: 30.07.09 14:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Хм, ошибка 1332 вроде как однозначно говорит, что в доступных Вашему провайдеру безопасности базах такой сид не числится. А SYSTEM, WETWORK SERVICE, они на любой системе одинаковы, потому как well-known. В связи с чем несколько глупых вопросов, если не возражаете

А>Имя системы при вызове LookupAccountSid указано верно? Сам полученный SID на вид как, нормальный? Можете его сравнить с реальным SID того пользователя, от которого работает целевое приложение? Может это вообще не доменный пользователь, может её под локальным запустили? Сисадмин, от которого запускаете своё приложение, он доменный?

А>Ещё можно ApiMon'ом посмотреть, что tasklist дёргает. По крайней мере, wbemXXX либы она загружает.


Возражаю?! Уважаемый, я торжествую, что получил хотя бы малость Вашего великодушного внимания!!

После дня мучений получил такие достижения и результаты:
Получаемый SID корректный. Нечего лучше, чем извлечь информацию через
const string SidSearchFormat = "LDAP://<SID={0}>";
DirectoryEntry(string.Format(SidSearchFormat, SIO.ToString()));
я не нашел. Это даже корректно работает, и извлекает кучу атрибутов элемента AD.
Даже для удаленных систем...но! Проверка показала, что работает — да не всегда.
Если я опрашиваю, скажем, сервер — всё отлично. Но применительно к рабочим станциям
я ещё на вызове hserver = WTSOpenServer(args[0]) получаю ошибку с кодом 5(Access Denied).
Типа, недостаточно прав — хотя вызов проходит с полномочиями сисадмина, а например
интерактивно удаленный рабочий стол на системе я получаю без проблем.
Удаленные операционки РС — от WinXP и выше...

С другой стороны, используя WMI-интерфейс, я без проблем получаю процессы и владельцев
с рабочих станций, но не могу получить доступ к серверам.
При вызове

ManagementScope oMs = new ManagementScope("\\\\" + args[0] +"\\root\\cimv2", connectoptions);
Console.WriteLine("*");
oMs.Connect();

возникает ошибка
Необработанное исключение: System.Runtime.InteropServices.COMException (0x800706
BA): Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)
в System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 er
rorCode, IntPtr errorInfo)

Есть один нюанс — сервера обитают в одной подсети, РС — в другой. Вероятно, проблема именно в этом.
и вот сижу в депрессии есть вариант WMI, который работает только в моей подсетке.
И есть вариант WST* API, который работает только между моей РС и серверами...
черт знает что. Вот такие гниловате плоды собраны за день
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.