为了学习目的,我正在编写自己的Active Directory客户端。为了执行诸如解锁帐户和重置密码之类的命令,我必须输入我的管理员帐户和密码,并使用
据我所知,我可以使用
所以我必须:
编辑:修复了LogonUser的名称
WindowsIdentity.Impersonate
以我的管理员帐户运行代码。我想知道保护密码的选项,因为它必须在程序中多次使用。据我所知,我可以使用
SecureString
来存储密码。但是要以我的管理员帐户运行代码,我必须使用WindowsIdentity.Impersonate
,而要使用它,我必须从LogonUser
获取一个令牌,该令牌需要常规的string
而不是SecureString
。所以我必须:
启动时登录
将输入转换为
SecureString
清除输入
将先前创建的
SecureString
转换为string
将转换后的字符串传递给
LogonUser
将转换的字符串清除为
null
执行命令
清除
LogonUser
对象
SecureString
转换为string
使用它似乎很奇怪......似乎会削弱其目的并在我转换它时使密码更加易受攻击。编辑:修复了LogonUser的名称
UserImpersonation
是我很久以前写的一个类...它基本上是LogonUser的一个包装器,它还请求一个字符串作为密码。那能改成IntPtr
吗?如果是这样,我可以将SecureString
传递给密码参数吗?(我现在想试试,但我已经不在工作中了...) - duckSecureString
,但是安全地传递密码不应该很困难。我下面会回答... - Ilian