一个C/S的客户端,读取exchange ,显示用户未读邮件的数量。
点击利用Process启动IE,直接登录OWA(Exchange Web Mail),需要集成单点登陆.因为OWA站点是集成windows身份认证(AD)的,而客户端大多没有加入域。
登录C/S客户端的时候,用户输入域用户账户和口令,所以域用户信息我都可以取到,
但不知道如何把这个身份传递给IE,并让IE使用这个用户身份直接登录OWA,而不弹出windows身份认证的窗口。PS:用户本机电脑并未加入域。
-------------------------
困扰了很久,能给出C#可行代码的马上结贴给分

解决方案 »

  1.   

    恐怕很难如果你的计算机加入到域里面了,那么还比较容易实现,大概方法如下:
    Impersonate你需要输入到登陆框里面的域用户名和密码,来启动IE。这样启动的IE在访问网站的时候会自动使用你前面所impersonate的帐号,自然也就不会弹出登陆框咯。
    关于如何在.NET里面做这样的impersonate,请参考:http://support.microsoft.com/kb/889251
    当然,如果说你的C/S程序使用C++之类的非托管代码开发的,那就更方便一点:http://msdn.microsoft.com/en-us/library/ms682429(VS.85).aspx那么,既然你的PC不在域里面,那就比较困难,你需要了解IE所能提供的API。据我所知,可以通过COM调用的方式来启动IE,那么我目前不知道是否同样有COM接口使得你能在弹出登陆框的时候输入用户名密码。我帮你查一下吧,不过不报太大希望。
      

  2.   

    给你一点资料:
    http://msdn.microsoft.com/en-us/library/aa752084(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/aa752040(VS.85).aspx能不能做到就看你自己研究了。
      

  3.   

    建议必须加入AD,我以前公司就是必须加入AD包括任何人。
      

  4.   

    InternetExplorer Object 没有合适的函数或者属性!
    难道无解了么?
      

  5.   


    说实话,这种方式是很困难的,需要你对IE的实现非常了解.再说,就算你捕获了IE6的弹出对话框,你还要考虑IE7, IE8是不是也以同样的方式捕获?个人认为这条路很难走得通,除非你是真正的高手.
      

  6.   


    不能。我之前已经说过,如果在域里面,那么就可以做Impersonate,也就是你所说的附加用户参数。
      

  7.   

    直接使用WEBBROWSER转换,可行么?获取WEBBROWSER里的用户身份信息。?