通过网络执行应用程序时获取当前Windows用户的名字

时间:2014-12-19 09:44:46

标签: c# .net

我有一个应用程序(C#,.NET4.5)放在远程计算机上,通过本地网络访问和执行。我们将应用程序放置在“AppPC”的计算机和正在使用应用程序“UserPC”的计算机调用。

我希望实现与此相同的目标,这是当前Windows用户的第一个名称(不是用户名):

System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;

当应用程序位于同一个UserPC上时,此代码工作正常,但如果应用程序位于AppPC上,则会引发异常。更确切地说是System.DirectoryServices.Protocols.LdapException:“无法建立连接。”

我可以使用以下命令找到UserPC的名称:

PrincipalContext ctx = new PrincipalContext(ContextType.Machine,null);
string pcName = ctx.ConnectedServer;

但是从那里开始,我不知道如何获取当前的用户名。

我尝试通过UserPrincipal上的循环获取ctx中的所有PrincipalSearcher.FindAll(),但这只显示两个用户“Administrator”和“Guest”,这是假的,至少在UserPC。也许AppPC有那些用户,我不确定。

使用System.Environment.UserName我可以获取用户名但不能获得名字,这是我感兴趣的。

编辑:忘了说我已经检查了这个并且也不起作用(null): How do I get the current username in .NET using C#?

0 个答案:

没有答案