![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
конвертация ad path...? [D7]
guest © (2012-06-12 12:00:00)есть функция выбора пользователей windows, которая возвращает путь к юзеру в формате AD:
в случае раб.группы возвращает:
WinNT://WORKGROUP/XPVIRTUAL/VMAdmin
в случае домена возвращает:
GC://mydomain.ru:3268/CN=Andrew Popov,CN=Users,DC=mydomain,DC=ru
при том, что данный юзер вообще состоит в домене corpmsk и его логин apopov
т.е. нам нужен короткий путь вида domain\user для доменов либо computer\user для рабочих групп
код обработчика работы диалога выбора пользователей:
function ProcessSelectedObjects(DatObj: IDataObject): HRESULT;
var
StgMed: TStgMedium;
FmtEtc: TFormatEtc;
SelLst: PDSSelectionList;
Index: ULONG;
Text: string;
begin
if nil = DatObj then
Result := E_INVALIDARG
else
begin
with FmtEtc do
begin
cfFormat := RegisterClipboardFormat(CFSTR_DSOP_DS_SELECTION_LIST);
ptd := nil;
dwAspect := DVASPECT_CONTENT;
lindex := -1;
tymed := TYMED_HGLOBAL;
end;
Result := DatObj.GetData(FmtEtc, StgMed);
if Succeeded(Result) then
begin
SelLst := PDsSelectionList(GlobalLock(StgMed.hGlobal));
if SelLst <> nil then
try
Text := '';
for Index := 0 to SelLst.cItems - 1 do
begin
Text := Text + Format(
'Object : %u'#13#10 +
' Name : %s'#13#10 +
' Class: %s'#13#10 +
' Path : %s'#13#10 +
' UPN : %s'#13#10, [
Index,
WideCharToString(SelLst.aDsSelection[Index].pwzName),
WideCharToString(SelLst.aDsSelection[Index].pwzClass),
WideCharToString(SelLst.aDsSelection[Index].pwzADsPath),
WideCharToString(SelLst.aDsSelection[Index].pwzUPN)]);
end;
ShowMessage(Text);
finally
GlobalUnlock(StgMed.hGlobal);
end
else
Result := E_POINTER;
ReleaseStgMedium(StgMed);
end;
end;
end;
как же правильно вытащить из объекта пользователя короткий путь?
guest (2012-06-12 15:34:00) [1]с IADsNameTranslate всё получилось, всем спасибо)
guest (2012-06-12 12:34:00) [2]нашел такую штуку как ActiveDs_TLB для конвертации адшных имен.. а для раб. групп просто парсить строку... - это оптимальный путь?
guest (2012-06-12 12:10:00) [3]покурил мсдн...
в общем, надо User Principal Name конвертить в Down-Level Logon Name (NT Name)...