接下来来讲讲通过调用rundll32.exe来打开一些系统特定文件,先简单介绍下rundll32.exe的功能和作用。
顾名思义,rundll32就是"执行32位的dll文件",也就是执行dll文件中的内部函数,可以以命令行的形式调用windows32位的动态链接库。
同理,rundll.exe就是"执行16位的dll文件",调用的是16位的动态链接库。我们通过rundll32.exe执行指令来完成一些功能。
举个例子:
System.Diagnostics.Process.Start("rundll32.exe","user.exe,restartwindows"); //系统重启命令
rundll32命令大全
命令列:rundll32.exe user.exe,restartwindows
功能: 系统重启
命令列:rundll32.exe user.exe,exitwindows
功能: 关闭系统
命令列: rundll32.exe shell32.dll,Control_RunDLL
功能: 显示控制面板
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 显示“控制面板-辅助选项-键盘”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
功能: 显示“控制面板-辅助选项-声音”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
功能: 显示“控制面板-辅助选项-显示”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
功能: 显示“控制面板-辅助选项-滑鼠”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
功能: 显示“控制面板-辅助选项-传统”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 执行“控制面板-添加新硬体”向导。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 执行“控制面板-添加新印表机”向导。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 显示 “控制面板-添加/删除程式” 面板。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
功能: 显示 “控制面板-添加/删除程式-安装Windows” 面板。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。
命令列: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一个新的“我的公文包”。
命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 显示复制软碟视窗
命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。
命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 显示“日期与时间”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 显示“时区”选项视窗。
命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。
命令列: rundll32.exe rnaui.dll,RnaWizard
功能: 显示“新建拨号连接”向导的视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 显示“显示属性-背景”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 显示“显示属性-萤屏保护”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 显示“显示属性-外观”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 显示显示“显示属性-属性”选项视窗。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 显示Windows的“字体”档案夹。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 同样是显示Windows的“字体”档案夹。
命令列: rundll32.exe shell32.dll,SHFormatDrive
功能: 显示格式化软碟对话框。
命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
功能: 显示“控制面板-游戏控制器-一般”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
功能: 显示“控制面板-游戏控制器-进阶”选项视窗。
命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文档)
功能: 列印HTML文档。
命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
功能: 显示Microsoft Exchange一般选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
功能: 显示“控制面板-滑鼠” 选项 。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
功能: 显示 “控制面板-键盘属性-速度”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
功能: 显示 “控制面板-键盘属性-语言”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
功能: 显示Windows“印表机”档案夹。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
功能: 显示“控制面板-输入法属性-输入法”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
功能: 执行“添加新调制解调器”向导。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
功能: 显示“控制面板-多媒体属性-音频”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
功能: 显示“控制面板-多媒体属性-视频”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
功能: 显示“控制面板-多媒体属性-MIDI”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
功能: 显示“控制面板-多媒体属性-CD音乐”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
功能: 显示“控制面板-多媒体属性-设备”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
功能: 显示“控制面板-声音”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
功能: 显示“控制面板-网路”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
功能: 显示ODBC32资料管理选项视窗。
命令列: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:/path/filename}
功能: 显示指定档案(drive:/path/filename)的“打开方式”对话框。
命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
功能: 显示“控制面板-密码”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
功能: 显示“控制面板-电源管理属性”选项视窗。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
功能: 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
功能: 显示“控制面板-区域设置属性-区域设置”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
功能: 显示“控制面板-区域设置属性-数字”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
功能: 显示“控制面板-区域设置属性-货币”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
功能: 显示“控制面板-区域设置属性-时间”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
功能: 显示“控制面板-区域设置属性-日期”选项视窗。
命令列: rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名]
功能: 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
功能: 显示“控制面板-系统属性-传统”属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
功能 : 显示“控制面板-系统属性-设备管理器”属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
功能: 显示“控制面板-系统属性-硬体配置档案”属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
功能: 显示“控制面板-系统属性-性能”属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
功能: 显示“拨号属性”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
功能: 显示“桌面主题”选项面板
命令列: rundll32.exe shell32.dll,Control_RunDLL firewall.cpl
功能: 显示“Windows防火墙"面板
命令列: rundll32.exe shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW
功能: 显示“无线网络设置"面板
更多的命令请到这里下载:http://download.csdn.net/detail/czw2010/4530206
System.Diagnostics.Process.Start("notepad.exe"); -- 打开记事本
System.Diagnostics.Process.Start("calc.exe "); -- 打开计算器
System.Diagnostics.Process.Start("regedit.exe "); -- 打开注册表
System.Diagnostics.Process.Start("mspaint.exe "); -- 打开画图板
System.Diagnostics.Process.Start("write.exe "); -- 打开写字板
System.Diagnostics.Process.Start("mplayer2.exe "); --打开播放器
System.Diagnostics.Process.Start("taskmgr.exe "); --打开任务管理器
System.Diagnostics.Process.Start("eventvwr.exe "); --打开事件查看器
System.Diagnostics.Process.Start("winmsd.exe "); --打开系统信息
System.Diagnostics.Process.Start("winver.exe "); --打开Windows版本信息
System.Diagnostics.Process.Start("mailto: "+ address); -- 发邮件
shutdown.exe:
参数:-s 关机 -r重启 -f强行 -t 时间 -a 取消关机 -l 注销 -i 显示用户界面
System.Diagnostics.Process.Start("shutdown.exe","-r"); -- 关闭并重启计算机
System.Diagnostics.Process.Start("shutdown.exe","-s -f"); -- 关闭计算机
System.Diagnostics.Process.Start("shutdown.exe","-s -f 30"); -- 30s后关闭计算机
System.Diagnostics.Process.Start("shutdown.exe","-l"); --注销计算机
System.Diagnostics.Process.Start("shutdown.exe","-a"); --撤销关闭计算机
SpecialFolder枚举成员:
成员名称 | 说明 | ||
---|---|---|---|
ApplicationData | 目录,它用作当前漫游用户的应用程序特定数据的公共储存库。 漫游用户在网络上的多台计算机上工作。漫游用户的配置文件保存在网络服务器上,当用户登录到某个系统上时,它会加载到该系统。 | ||
CommonApplicationData | 目录,它用作所有用户使用的应用程序特定数据的公共储存库。 | ||
CommonProgramFiles | 用于应用程序间共享的组件的目录。 | ||
Cookies | 用作 Internet Cookie 的公共储存库的目录。 | ||
Desktop | 逻辑桌面,而不是物理文件系统位置。 | ||
DesktopDirectory | 用于物理上存储桌面上的文件对象的目录。 不应将此目录与桌面文件夹本身混淆,后者是虚拟文件夹。 | ||
Favorites | 用作用户收藏夹项的公共储存库的目录。 | ||
History | 用作 Internet 历史记录项的公共储存库的目录。 | ||
InternetCache | 用作 Internet 临时文件的公共储存库的目录。 | ||
LocalApplicationData | 目录,它用作当前非漫游用户使用的应用程序特定数据的公共储存库。 | ||
MyComputer | “我的电脑”文件夹。
| ||
MyDocuments | “我的电脑”文件夹。 | ||
MyMusic | “My Music”文件夹。 | ||
MyPictures | “My Pictures”文件夹。 | ||
Personal | 用作文档的公共储存库的目录。 | ||
ProgramFiles | “Program files”目录。 | ||
Programs | 包含用户程序组的目录。 | ||
Recent | 包含用户最近使用过的文档的目录。 | ||
SendTo | 包含“发送”菜单项的目录。 | ||
StartMenu | 包含“开始”菜单项的目录。 | ||
Startup | 对应于用户的“启动”程序组的目录。 每当用户登录、启动 Windows NT 或更高版本或启动 Windows 98 时,系统均会启动这些程序。 | ||
System | “System”目录。 | ||
Templates | 用作文档模板的公共储存库的目录。 |
通过Environment.GetFolderPath(Environment.SpecialFolder.XXXXX);我们可以轻松地获得系统特殊文件夹的具体路径,然后用Process.Start()方法打开该文件夹。
例如:
System.Diagnostics.Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System)); //打开系统文件夹(System32文件夹)
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
private static extern int FindWindow(string ClassName, string WindowName);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int ShowWindow(int handle, int cmdShow);
[System.Runtime.InteropServices.DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
private static extern int mciSendString(string lpstrCommand, string lpstrReturnstring, int uReturnLength, int hwndCallback);
private const int SW_HIDE = 0;//API参数表示隐藏窗口
private const int SW_SHOW = 5;//API参数表示用当前的大小和位置显示窗口
ShowWindow(FindWindow("Shell_TrayWnd", null), SW_HIDE); -- 隐藏隐藏任务栏
ShowWindow(FindWindow("Shell_TrayWnd", null), SW_SHOW); -- 显示任务栏
mciSendString("set CDAudio door open", null, 127, 0); -- 弹出光驱
mciSendString("set CDAudio door closed", null, 127, 0); --关闭光驱
同步问题
调用执行档后需要等待调用结束再往下执行 , 就像 ShellExecute 和ShellExecuteEx() .
解决的办法是process.start()之后 判断Process.HasExited的状态 .
- <p style="TEXT-INDENT: 2em"> private void analyseData(DataTable resultDataTable, string resultFilePath)
- {
- try
- {
- string exeFilePath = null;
- string tempFilePath = this.txtFilePath.Text.Trim();
- exeFilePath = Application.StartupPath + "<a href="file://commandttest.exe/" rel="nofollow">\\Command\\ttest.exe</a>";</p><p style="TEXT-INDENT: 2em">
- // 执行exe文件
- Process process = new Process();
- process.StartInfo.FileName = exeFilePath;
- //process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
- process.StartInfo.UseShellExecute = false;
- process.StartInfo.CreateNoWindow = true;
- process.StartInfo.Arguments = "\"" + tempFilePath + "\" \"" + resultFilePath + "\"";
- process.Start();
- // 如果该进程没有执行完毕,让下一个进程等待
- <span style="color:#3366ff;"><strong>while (!process.HasExited)
- {
- Thread.Sleep(1);
- }</strong></span></p><p style="TEXT-INDENT: 2em"> // 将resultFilePath 文件中的数据读入到DataTable中
- readDataFile(resultDataTable, resultFilePath);
- }
- catch (IOException ioEx)
- {
- throw ioEx;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }</p>