今天有个任务,那就是使用C#代码实现对windows凭据管理的操作。
例如:向windows凭据管理中添加凭据、删除凭据以及查询凭据等功能。
于是乎,就开始在网上查找。经过漫长的查询路,终于在一片英文博客中找到了相关代码。
经过实验,能够解决我的问题。在此,感谢那位博主。
现在就代码贴出,希望能帮到有需要的人。 代码如下:
private void button1_Click(object sender, EventArgs e) { //ip地址或者网络路径 例如:TERMSRV/192.168.2.222 string key = txtIP.Text.Trim(); string userName = txtUserName.Text.Trim(); string password = txtPassword.Text.Trim(); //用于标记凭据添加是否成功 i=0:添加成功;i=1:添加失败 int i = 0; try{ i = NativeCredMan.WriteCred(key, userName, password, CRED_TYPE.DOMAIN_PASSWORD, CRED_PERSIST.LOCAL_MACHINE); } catch{ i = 1; } if (i == 0) txtMsg.Text = "添加成功"; else txtMsg.Text = "添加失败"; } /// <summary> /// 凭据类型 /// </summary> public enum CRED_TYPE : uint { //普通凭据 GENERIC = 1, //域密码 DOMAIN_PASSWORD = 2, //域证书 DOMAIN_CERTIFICATE = 3, //域可见密码 DOMAIN_VISIBLE_PASSWORD = 4, //一般证书 GENERIC_CERTIFICATE = 5, //域扩展 DOMAIN_EXTENDED = 6, //最大 MAXIMUM = 7, // Maximum supported cred type MAXIMUM_EX = (MAXIMUM + 1000), // Allow new applications to run on old OSes } //永久性 public enum CRED_PERSIST : uint { SESSION = 1, //本地计算机 LOCAL_MACHINE = 2, //企业 ENTERPRISE = 3, } internal class NativeCredMan { [DllImport("Advapi32.dll", EntryPoint = "CredReadW", CharSet = CharSet.Unicode, SetLastError = true)] //读取凭据信息 static extern bool CredRead(string target, CRED_TYPE type, int reservedFlag, out IntPtr CredentialPtr); [DllImport("Advapi32.dll&#