在AD中存取照片

AD中有存放照片的字段吗?
答案确定是有的、photo,jpegPhoto, thumbnailPhoto

前端时间客户,包括领导 在问通信录中的照片为何存在数据库中而不是AD中,AD中的属性能不能利用起来呢?
我想照片这么大的数据,若是用户量大的,应该是不建议存放在AD端的,否则为何微软的ad管理器都没有照片的管理项呢?

可是既然领导问了,固然要去验证一下。。

 1    
 2  // 获取须要修改的用户对象实体
 3  private  DirectoryEntry getDirectoryEntryBy( string  samAccountName)
 4          { 
 5               string  path = " LDAP://pcdc01.company.com/OU=上海XX软件有限公司,dc=company,dc=com " ;
 6              DirectoryEntry rootde  =   new  DirectoryEntry(path,  " userid " " pwd " );  // 访问用户
 7              DirectorySearcher ds  =   new  DirectorySearcher(rootde);
 8              ds.SearchScope  =  SearchScope.Subtree;
 9              ds.Filter  =   " (&(&(objectCategory=person)(objectClass=user))(sAMAccountName= "   +  samAccountName  +   " )) " ;
10              SearchResult sr  =  ds.FindOne();
11               if  (sr  !=   null )
12              {
13                  return  sr.GetDirectoryEntry();
14              }
15               else  
16              {
17                   return   null ;
18              }
19          }

 1  // 如下代码是从AD中取图片 
 2 
 3  string  account  =   this .tbAccount.Text;
 4               if  ( account  ==   ""  )
 5              {
 6                  MessageBox.Show( " 请填写账号 " );
 7                   return ;
 8              }
 9              DirectoryEntry de  =  getDirectoryEntryBy(account);
10               if  (de  ==   null )
11              {
12                  MessageBox.Show( " 账号无效 " );
13                   return ;
14              }
15               string  photocol  =   this .cbbPhotoCol.Text;  // 那个字段存取照片,三个中选一个
16              
17              System.DirectoryServices.PropertyValueCollection pvc  =  de.Properties[photocol];
18               if  (pvc.Value  !=   null   &&  pvc.Value  is   byte [])
19              {
20                   byte [] by  =  ( byte [])pvc.Value;
21                  MemoryStream Stream  =   new  MemoryStream(by);
22                   this .pbcontainer.Image  =  Image.FromStream(Stream);
23              }
24               else
25              {
26                  MessageBox.Show( " False " );
27              }


 1  
 2 将照片存到AD中
 3
 4 string  account  =   this .tbAccount.Text;
 5              if  (account  ==   "" )
 6              {
 7                MessageBox.Show("请填写账号");
 8                return;
 9            }

10           
11              string  cc  =   this .textBox1.Text;
12              if  (cc  ==   "" )
13              {
14                MessageBox.Show("请选择图片");
15            }

16              else
17              {
18               Image im= Image.FromFile(cc);
19               MemoryStream Stream = new MemoryStream();
20               im.Save(Stream, System.Drawing.Imaging.ImageFormat.Jpeg);
21               byte[] bb=Stream.GetBuffer();
22               DirectoryEntry de = getDirectoryEntryBy(this.tbAccount.Text);
23               if (de == null)
24               {
25                   MessageBox.Show("账号无效");
26                   return;
27               }

28               string photocol = this.cbbPhotoCol.Text;
29               System.DirectoryServices.PropertyValueCollection pvc = de.Properties[photocol];
30               pvc.Value = bb;
31               de.CommitChanges();
32               MessageBox.Show("更新成功");
33            }

 

出处:http://www.cnblogs.com/xuanye/archive/2008/05/13/1195225.htmlhtml