Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Открыть системное диалоговое окно списка пользователей   Найти похожие ветки 

 
artdeveloper ©   (2005-08-30 17:59) [0]

Здравствуйте мастера.
Подскажите пожалуйста каким образом можно вызвать стандартное диалоговое окно выбора пользователя(ей). То самое, которое появляется при установке прав доступа к папке в системе NTFS или расшареному ресурсу.


 
BiN ©   (2005-08-30 18:17) [1]

artdeveloper ©   (30.08.05 17:59)  

Здравствуйте мастера.
Подскажите пожалуйста каким образом можно вызвать стандартное диалоговое окно выбора пользователя(ей).


Ты говоришь про два различных диалога.
Первый - для выбора объектов (групп, пользователей, компьютеров и т.п.). Для вызова этого диалога используется COM-объект IDsObjectPicker.

То самое, которое появляется при установке прав доступа к папке в системе NTFS или расшареному ресурсу

Для настройки же дескриптора безопасности защищаемых объектов, втом числе и файлов NTFS, используется ф-я EditSecurity.

Примеры знает гугль.


 
troits ©   (2005-08-30 18:27) [2]

Не это, случайно? Путь к Windows - свой .:)

rundll32.exe "D:\WINDOWS\system32\netplwiz.dll",UsersRunDll


 
artdeveloper ©   (2005-08-30 18:41) [3]

rundll32.exe "D:\WINDOWS\system32\netplwiz.dll",UsersRunDll
Спасибо, но не это...

Если несложно выложите пример использования IDsObjectPicker


 
Турист   (2005-08-30 23:32) [4]

http://64.233.183.104/search?q=cache:E04OB1WZJBgJ:www.delphipraxis.net/post202597.html+IDsObjectPicker+delphi&hl=ru


uses
 ActiveX, ObjSel;

////////////////////////////////////////////////////////////////////////////////
//
//  Test - "Select User" dialog
//

function InitObjectPicker(Picker: IDsObjectPicker): HRESULT;
var
 ScopeInit: array [0..0] of TDSOPScopeInitInfo;
 InitInfo: TDSOPInitInfo;
begin
 if nil = Picker then
   Result := E_INVALIDARG
 else
 begin
   ZeroMemory(@ScopeInit, SizeOf(ScopeInit));
   ScopeInit[0].cbSize := SizeOf(TDSOPScopeInitInfo);
   ScopeInit[0].flType := DSOP_SCOPE_TYPE_TARGET_COMPUTER;
   ScopeInit[0].flScope := DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE;
   ScopeInit[0].FilterFlags.Uplevel.flBothModes := DSOP_FILTER_USERS;
   ScopeInit[0].FilterFlags.flDownlevel := DSOP_DOWNLEVEL_FILTER_USERS;

   ZeroMemory(@InitInfo, SizeOf(InitInfo));
   InitInfo.cbSize := SizeOf(InitInfo);
   InitInfo.cDsScopeInfos := SizeOf(ScopeInit) div SizeOf(TDSOPScopeInitInfo);
   InitInfo.aDsScopeInfos := @ScopeInit;
   InitInfo.flOptions := DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK;

   Result := Picker.Initialize(InitInfo);
 end;
end;

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 := PDS_SELECTION_LIST(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;

procedure TForm1.Button1Click(Sender: TObject);
var
 Picker: IDsObjectPicker;
 DatObj: IDataObject;
begin
 if Succeeded(CoInitialize(nil)) then
 try
   if Succeeded(CoCreateInstance(CLSID_DsObjectPicker, nil,
     CLSCTX_INPROC_SERVER, IID_IDsObjectPicker, Picker)) then
   try
     if Succeeded(InitObjectPicker(Picker)) then
       case Picker.InvokeDialog(Self.Handle, DatObj) of
         S_OK:
           try
             ProcessSelectedObjects(DatObj);
           finally
             DatObj := nil;
           end;
         S_FALSE:
           ShowMessage("Dialog wurde vom Benutzer abgebrochen.");
       end;
   finally
     Picker := nil;
   end;
 finally
   CoUninitialize;
 end;
end;


 
artdeveloper ©   (2005-08-31 15:45) [5]

Спасибо за пример. Работает.

Для тех кто будет использовать данный пример:
юнит ObjSel не входит в стандартную поставку Delphi. Он из пакета JEDI VCL.

Кстати в JEDI VCL есть готовый компонент для выбора объектов JvObjectPickerDialog.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
1-1129537599
Gugle
2005-10-17 12:26
2005.11.06
Многопочность при работе с портами ПК


14-1129711273
vecna
2005-10-19 12:41
2005.11.06
Тааак.... список непонятных моментов в Дельфи начинает расти


4-1125093097
ronyn
2005-08-27 01:51
2005.11.06
Как шрифт установить?...


3-1127308032
Juice
2005-09-21 17:07
2005.11.06
Модификация через сетку табл. без ключей


1-1129192849
markers
2005-10-13 12:40
2005.11.06
Манифест vs ListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский