欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

如何快捷打开“存储用户名和密码”对话框?

在Windows XP Pro里,经常需要访问“存储用户名和密码”对话框,例如增加远程计算机的访问凭据,或者删除Microsoft Passport的登录信息。
但是这个组件隐藏的比较深,可以借助以下两种方式:
1. 在控制面板里打开“用户帐户”,选择当前登录帐户,然后单击左上方的“管理我的网络密码”任务链接。
2. 运行“control userpasswords2”,在打开的对话框里切换到“高级”标签页,然后单击“管理密码”按钮。
很显然,这样的效率太低,很不方便。
笔者找到一个快速访问的方法,可以直接在运行对话框里输入以下命令访问该组件:
rundll32 keymgr.dll,KRShowKeyMgr

方法介绍
但是关键是要介绍如何发现这个快捷方法的,鄙帚不敢自珍,先介绍比较笨的方法:
(1) 首先用前面介绍的常规方法打开“存储用户名和密码”对话框,然后打开任务管理器,在“应用程序”标签页里用鼠标右键单击该“存储用户名和密码”组件,执行“转到进程”菜单命令,即可发现该组件实际上是由rundll32进程所启动的。

提示 可以将rundll32进程想像成一辆货车,其本身并不能完成什么工作,关键是要加载某个dll文件里的函数,以达到相应的功能。
接下来的任务就是要找到rundll32进程加载了什么dll文件,又执行了其中的什么函数。由于笔者并非Dev,限于能力,所以只能采用连蒙带猜的笨方法,还请诸君莫笑。
(2) 打开Process Explorer,设置View、Low Pane View,选中“Dlls”,然后在进程窗格选中“rundll32”进程,即可在下方窗格看到该进程所加载的Dll文件。
逐个查看dll文件的描述信息,可以看到有一个keymgr.dll文件,其描述信息为“Stored user name and password”,这个dll文件应该就是“存储用户名和密码”组件的“真身”。
(3) 如果系统中安装了Support Tools的话,现在可以查看该dll文件里包含什么函数,直接在Process Explorer下方的窗格里用鼠标右键单击该keymgr.dll,然后执行“Launch Depends”菜单命令,即可打开Dependency Walker(Support Tools中的工具)窗口,从中可以看到该keymgr.dll文件中包含一个KRShowKeyMgr函数,如下图所示。

(4) 如果系统中安装了MSDN Library,则可以右键单击该函数,选择“Lookup Function in External Help”菜单项,即可直接在MSDN Lib中访问其帮助信息,MSDN中的解释如下:
KRShowKeyMgr
The KRShowKeyMgr function is used to bring up the key manager dialog into the user interface. 
      Windows XP:  This function is used only in Windows XP. It is not currently included in any other code base, nor is it expected to be used or supported in the future.
这说明该函数可以调出密码管理的用户界面(仅用于Windows XP)。
(5) 我们知道,可以用以下方式直接用如下格式快捷访问某个控制面板组件:
rundll32 DllFileName,FunctionName
所以可以尝试以下命令:
rundll32 keymgr.dll,KRShowKeyMgr
实验结果是可以直接打开“存储用户名和密码”对话框。
除此之外,我们还可以用以下命令方式,打开“存储用户名和密码”组件:
rundll32.exe shell32.dll,Control_RunDLL keymgr.dll

写在最后
其实完全可以直接在Process Explorer中查看组件的快捷命令方式,例如对于这个“存储用户名和密码”组件,可以用以下方法进行查看:
1. 在控制面板里打开“用户帐户”,选择当前登录帐户,然后单击左上方的“管理我的网络密码”任务链接。
然后打开Process Explorer,双击rundll32,在其中的“Command Line”文本框里可以看到该组件所对应的命令行,如下图所示。

2. 同理,运行“control userpasswords2”,在打开的对话框里切换到“高级”标签页,然后单击“管理密码”按钮打开“存储用户名和密码”组件。
然后打开Process Explorer,双击rundll32,在其中的“Command Line”文本框里可以看到该组件所对应的命令行如下:
rundll32.exe shell32.dll,Control_RunDLL keymgr.dll

已发表 2005年11月1日 16:49 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2005年11月1日 19:31 by Heelen

# re: 如何快捷打开“存储用户名和密码”对话框?

强!又受益了!
我以前有篇文章,也略提到如何获取这些参数的:(http://www.cfan.com.cn/pages/20050421/1412.htm

不过我这篇是针对某个DLL来研究有哪些参数,而你的是针对某个功能来追溯哪个DLL,再来剖析究竟是哪个参数,方向不同。
2005年11月2日 10:59 by ahpeng

# re: 如何快捷打开“存储用户名和密码”对话框?

Heelen,我看了你的文章,很不错,支持一下!
我只是纳闷,按照电脑爱好者的目标读者群,他们应该不接受涉及底层技术的文章~~~
2005年11月3日 15:43 by junxiulee

# re: 如何快捷打开“存储用户名和密码”对话框?

好文章,有深度!
2005年11月3日 16:00 by junxiulee

# re: 如何快捷打开“存储用户名和密码”对话框?

研究Windows底层的东西,还真得有开发的知识,否则MSDN都看不懂啊。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devnotes/winprog/krshowkeymgr.asp
2005年11月3日 20:25 by ahpeng

# re: 如何快捷打开“存储用户名和密码”对话框?

多谢Junxiulee夸奖,Dev我一窍不通,只能根据名字猜测。
2005年11月3日 21:55 by Heelen

# re: 如何快捷打开“存储用户名和密码”对话框?

呵呵,确实,CFAN接受文章要有个度,以前有篇文章就是比较深入,所以被总编踢回,好在CCE深浅通吃(^O^要不我稿费泡汤)可能多数读者对rundll32存在不解,所以就登了吧,呵呵,我管稿费不管其他^_^ (期待盆兄更多精彩文章)
2005年11月7日 20:54 by 流浪的双鱼

# re: 如何快捷打开“存储用户名和密码”对话框?

好文章!!!打开此对话框还可以使用这个命令:control Keymgr.dll。 最终执行的命令还是调用Rundll32.exe,不知这个control命令在其中发挥了什么作用?
2005年11月9日 21:36 by chta3389

# re: 如何快捷打开“存储用户名和密码”对话框?

又学到了,这样的话也能够分析rundll32.DLL下到底运行了哪个DLL,对分析病毒很有用处。谢谢
2006年11月23日 13:31 by aaa

# re: 如何快捷打开“存储用户名和密码”对话框?

然后打开Process Explorer,双击rundll32,在其中的“Command Line”文本框里可以看到该组件所对应的命令行,如下图所示。
-----------------------
使用什么工具实现的?
正常情况下是没有的

说说您的看法?

(必填) 
必填 
(必填)