获取不在域中的计算机的域用户名

时间:2018-07-12 08:34:42

标签: c#

我希望有人可以帮助我解决我的问题。

有一个域,该域中有一些共享目录。用户具有域用户名和密码,可以访问该共享目录,但是大多数时间他的计算机不在域中。我的意思是,当他需要连接到该目录时,他正在键入网络路径(例如“ \\ fileserver”),而不是Windows要求输入用户名和密码,并且在写入后,他将获得访问权限,直到重新启动Windows或注销为止。 / p>

所以我的问题是,如何使用C#代码获取用户用来连接网络的域名?

我尝试使用CredentialCache.GetCredential,但是我认为只有当用户通过在C#程序中使用NetworkCredentials连接到共享目录时,它才起作用。如果在C#程序启动之前已经存在连接,则它将为空。 我也尝试使用Environment.UserName,但是由于计算机不在域中,因此它仅返回本地用户名,该用户名不同于域用户名。

对不起,我的英语不好,我希望你能理解我的解释。

1 个答案:

答案 0 :(得分:0)

您看过掘金包CredentialManagement吗?

我已经使用过,但是无法漫游通过企业持久性保存的凭据

using CredentialManagement;

using (CredentialSet credentials = new CredentialSet())
{
    Debug.Print(credentials.Count.ToString() + " credential(s) found.");
    foreach (Credential credential in credentials)
    {
        Debug.Print(credential.Target); //This is domain/IP of the saved credential.
        Debug.Print(credential.Type.ToString());
        Debug.Print(credential.Username);
        Debug.Print(credential.PersistanceType.ToString());
        Debug.Print(credential.Description);
        Debug.Print(credential.LastWriteTime.ToString());
    }
    Debug.Print("End");
}