我希望有人可以帮助我解决我的问题。
有一个域,该域中有一些共享目录。用户具有域用户名和密码,可以访问该共享目录,但是大多数时间他的计算机不在域中。我的意思是,当他需要连接到该目录时,他正在键入网络路径(例如“ \\ fileserver”),而不是Windows要求输入用户名和密码,并且在写入后,他将获得访问权限,直到重新启动Windows或注销为止。 / p>
所以我的问题是,如何使用C#代码获取用户用来连接网络的域名?
我尝试使用CredentialCache.GetCredential,但是我认为只有当用户通过在C#程序中使用NetworkCredentials连接到共享目录时,它才起作用。如果在C#程序启动之前已经存在连接,则它将为空。 我也尝试使用Environment.UserName,但是由于计算机不在域中,因此它仅返回本地用户名,该用户名不同于域用户名。
对不起,我的英语不好,我希望你能理解我的解释。
答案 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");
}