麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

在Delphi中ADSI創建Windows用戶帳號

2019-11-18 18:25:38
字體:
來源:轉載
供稿:網友
      在Delphi中可以使用微軟的ADSI(活動目錄服務接口)創建Windows用戶帳號??赡苁怯捎贏DSI的名字,許多人以為ADSI只能在Windows 2000下使用,實際上所有Win32平臺都支持ADSI??赡苄枰螺dADSI為不同的Windows版本。(更多詳細資料http://www.microsoft.com/china/windows2000/library/howitworks/activedirectory/adsilinks.htm)。Windows 2000 包含ADSI。

        ADSI是一個很大的話題。在這篇文章中我只粗略的介紹一下。ADSI是一類為許多不同計算機服務(大部分基于目錄)的通用接口。一些標準的ADSI提供者(PRovider就像可以在你的程序中使用的COM接口)有WinNT,IIS,LDAP和NDS。使用WinNT提供者(Provider)能創建、修改用戶帳號,設置或修改組。

        下面的小程序展示了在NT/2000下使用ADSI創建用戶帳號必要的步驟:

        首先你需要導入ADSI類庫(Project/Import Type Library菜單)。該類庫可以在system32子目錄中找到(如 C:/WINNT/system32/activeds.tlb)。文件名必須是“ activeds.tlb”。如果找不到該文件,你需要正確的安裝ADSI。在成功導入類庫以后,可以在Delphi的Imports目錄下找到activeds_tlb.pas這樣一個文件(如 ../Delphi6/Imports/activeds_tlb.pas)。還需要這個文件包含在你的Uses語句,讓ADSI可以在Delphi程序中使用。

    下面是ADSI創建用戶的例子。需要用你將要創建用戶的真正的計算機名稱替換[computername]。同樣[accountname]是要創建的用戶帳號。在WindowNT 4.0和Windows 2000中測試通過。

...

uses ActiveX,        // 使用了COM Moniker實例
     ActiveDs_TLB,   // 已創建的類庫
     ComObj;         // 使用了OleCheck和其他COM函數

implementation

procedure TForm1.BtnCreateUserClick(Sender: TObject);
var
  Usr:  IADsUser;
  Comp: IADsContainer;
begin
  try
    Comp := GetObject('WinNT://[computername],computer') as
      IADsContainer;
    Usr := Comp.Create('user', '[accountname]') as IADsUser;
    Usr.SetInfo;
  except
    on E: EOleException do begin
      ShowMessage(E.Message);
    end;
  end;
end;


procedure TForm1.BtnSetPassWordClick(Sender: TObject);
var
  Usr: IADsUser;
begin
  try
    Usr := GetObject('WinNT://[computername]/[accountname],user')
      as IADsUser;
    Usr.SetPassword('thenewpassword');
  except
    on E: EOleException do begin
      ShowMessage(E.Message);
    end;
  end;
end;


// GetObject是在Usenet上找到的VB代碼(GetObject)。
//
// GetObject能使用“ADSipath”(如WinNT://....或IIS://localhost)
// 和現有的ADSI提供者捆綁在一起

function TForm1.GetObject(const Name: string): IDispatch;
var
  Moniker: IMoniker;
  Eaten: integer;
  BindContext: IBindCtx;
  Dispatch: IDispatch;
begin
  OleCheck(CreateBindCtx(0, BindContext));
  OleCheck(MkParseDisplayName(BindContext,
                              PWideChar(WideString(Name)),
                              Eaten,
                              Moniker));
  OleCheck(Moniker.BindToObject(BindContext, NIL, IDispatch,
            Dispatch));

  Result := Dispatch;
end;

end.

        也可以使用ADSI修改用戶帳號的設置。下列代碼能改變任何帳號的“密碼永不過期”選項。

procedure TFormMain.ButtonNeverExpiresClick(Sender: TObject);
var
  Usr: IADsUser;
begin
  try
    Usr := GetObject('WinNT://[computername]/[acccoutname],user') as IADsUser; 
                                  // 檢查Checkbox的狀態
  if CheckBoxPasswordNeverExpires.Checked then
    Usr.Put('UserFlags', Usr.Get('UserFlags') OR 65536) 
  // 65536在微軟ADSI SDK的iads.h中被定義為UF_DONT_EXPIRE_PASSWORD
  else
    Usr.Put('UserFlags', Usr.Get('UserFlags') XOR 65536);  
    Usr.SetInfo;

  except
    on E: EOleException do begin
      ShowMessage(E.Message);
    end;
  end;
end;


上一篇:Delphi斷想

下一篇:Delphi7的IDE概述(二)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 精品中文一区 | 青青草国产在线视频 | 亚洲一级毛片 | 香蕉久草视频 | 19禁国产精品福利视频 | h网站在线观看 | 黄在线 | 在线高清中文字幕 | 免费国产在线视频 | 国产高潮失禁喷水爽到抽搐视频 | 精品国产一区二区三区久久久蜜月 | 毛毛片在线看 | 免费性爱视频 | 国产精品啪一品二区三区粉嫩 | 日韩av日韩 | 欧美日韩视频第一页 | 欧美日韩中文字幕在线视频 | 少妇色诱麻豆色哟哟 | 欧美视屏一区二区 | 日本在线不卡免费 | 日韩视频一 | 依人在线视频 | 国产精品av久久久久久久久久 | 国产老师做www爽爽爽视频 | 精品国产一区二区三区四区阿崩 | 久久国产精品二国产精品 | h视频免费看 | 色婷婷久久一区二区 | 91精品国产91久久久 | 国产精品av久久久久久无 | 久久影院免费观看 | 国产精品麻豆一区二区三区 | 午夜精品成人 | 国产午夜精品一区二区三区不卡 | 万圣街在线观看免费完整版 | 黄色片网站免费 | 福利在线免费视频 | 91精品国产日韩91久久久久久360 | 国产成人精品免高潮在线观看 | 亚洲天堂ww | 久草在线视频中文 |