public bool Save()
{
CheckNotDisposed();
UnmanagedCodePermission.Demand();
var passwordBytes = Encoding.Unicode.GetBytes(Password);
if (Password.Length > (512))
throw new ArgumentOutOfRangeException("password", "The password has exceeded 512 bytes.");
var credential = new NativeMethods.CREDENTIAL
{
TargetName = Target,
UserName = Username,
CredentialBlob = Marshal.StringToCoTaskMemUni(Password),
CredentialBlobSize = passwordBytes.Length,
Comment = Description,
Type = (int) Type,
Persist = (int) PersistenceType
};
var result = NativeMethods.CredWrite(ref credential, 0);
if (!result)
return false;
LastWriteTimeUtc = DateTime.UtcNow;
return true;
}