Пример #1
0
        /// <summary>
        /// マネージドの値を元にアンマネージドにコピーする
        /// </summary>
        /// <param name="Credential"></param>
        /// <returns>解放用のオブジェクト</returns>
        public IDisposable Copy(WinCred.Credential Credential)
        {
            var Disposables      = new List <IDisposable>();
            var ResultDisposable = Disposable.Create(() =>
            {
                foreach (var d in Enumerable.Reverse(Disposables))
                {
                    d?.Dispose();
                }
            });

            try
            {
                Flags              = Credential.Flags;
                Type               = Credential.Type;
                TargetName         = Credential.TargetName;
                Comment            = Credential.Comment;
                LastWritten        = Credential.LastWritten.ToFILETIMEStructure();
                CredentialBlobSize = 0;
                CredentialBlobPtr  = IntPtr.Zero;
                Persist            = Credential.Persist;
                TargetAlias        = Credential.TargetAlias;
                UserName           = Credential.UserName;
                AttributeCount     = 0;
                AttributesPtr      = IntPtr.Zero;
                Disposables.Add(CopyAttributes(Credential.Attributes));
                Disposables.Add(CopyCredentialBlob(Credential.CredentialBlob));
                return(ResultDisposable);
            }
            catch
            {
                ResultDisposable?.Dispose();
                throw;
            }
        }
Пример #2
0
 public static extern ReturnCodes CredUIPromptForCredentials(
     ref INFO creditUR,
     string targetName,
     IntPtr reserved1,
     int iError,
     StringBuilder userName,
     int maxUserName,
     StringBuilder password,
     int maxPassword,
     ref int iSave,
     CredFlags credFlags
     );
Пример #3
0
 private static extern CredUiReturnCodes CredUIPromptForCredentials(
     ref CredUiInfo credUiInfo,
     string targetName,
     IntPtr reserved1,
     int iError,
     StringBuilder userName,
     int maxUserName,
     StringBuilder password,
     int maxPassword,
     ref int iSave,
     CredFlags credFlags
     );
Пример #4
0
 /// <summary>
 /// マネージドな Credential からの生成
 /// </summary>
 /// <param name="Credential"></param>
 public Credential(WinCred.Credential Credential)
 {
     Flags              = Credential.Flags;
     Type               = Credential.Type;
     TargetName         = Credential.TargetName;
     Comment            = Credential.Comment;
     LastWritten        = Credential.LastWritten.ToFILETIMEStructure();
     CredentialBlobSize = 0;
     CredentialBlobPtr  = IntPtr.Zero;
     Persist            = Credential.Persist;
     TargetAlias        = Credential.TargetAlias;
     UserName           = Credential.UserName;
     AttributeCount     = 0;
     AttributesPtr      = IntPtr.Zero;
 }