在离线状态下让Windowslogin用户的电子邮件

我们使用此代码来获取当前login用户的电子邮件:

var currentUsersEmail = UserPrincipal.Current.EmailAddress; 

这在networking上正常工作。 但是,我们有笔记本电脑用户远程运行我们的代码,并处于断开状态。 上面的代码在这个状态下会导致这个exception:

 System.DirectoryServices.AccountManagement.PrincipalServerDownException Message: "The server could not be contacted." 

有没有人知道一种方法来检索当前用户的电子邮件,这将在连接/networking和断开连接时都起作用。

更新:如果你想知道为什么我们要这样做。 我们的系统有一堆通过电子邮件发送警报的方法。 当我们的开发人员运行自动化testing时,我们希望将电子邮件发送给当前login的用户(即开发人员),以便他们可以validation格式。

您可以重写您的应用程序,以便它在第一次使用UserPrincipal.Current.EmailAddress时,也可能在线时,然后将该信息保存在用户的AppData文件夹或注册表中以供脱机工作时参考。 在离线工作之前,至少需要运行一个在线应用程序,但是我不知道如何不必询问用户或使用配置文件就可以做到这一点。

System.DirectoryServices.AccountManagement命名空间根本无法脱机工作。 这就像问一个数据库驱动的应用程序如何在不访问数据库的情况下工作。