如何获取当前用户的用户名,密码和域名

时间:2014-05-27 12:24:13

标签: c# authentication reporting-services windows-services

我开发了一个与报告服务互操作的Windows服务,因此我需要构建NetworkCredential以传递给SSRS。问题是 - 如何获得用户名,SecureString和运行该服务的用户域?

我会感激任何帮助!

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取当前用户:

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

如果我没记错的话,这个字段的前缀也只有domain\username

您无法检索当前登录用户的密码。但是,您可以指定Windows服务运行的用户。这样您就可以知道密码,并能够链接该帐户,并在整个域中授予适当的访问权限。

请注意,如果您将来某个时候决定将密码更改为用户帐户,则您需要手动更新服务上的凭据。

答案 1 :(得分:0)

要获得完整的答案,包括名字,姓氏和域,我们可以使用以下代码:

var domain = Environment.UserDomainName;
UserPrincipal userPrincipal = UserPrincipal.Current;
var firstname = userPrincipal.GivenName;
var lastname = userPrincipal.SurName
var username_id = userPrincipal.SamAccountName;

您需要添加System.DirectoryServices.AccountManagement作为程序集引用。