通过调用rundll32.exe来打开一些系统特定文件

接下来来讲讲通过调用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“我的电脑”文件夹。
注意

由于没有为“我的电脑”文件夹定义路径,因此 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的状态 .

 

  1. <p style="TEXT-INDENT: 2em"> private void analyseData(DataTable resultDataTable, string resultFilePath)  
  2.         {  
  3.             try  
  4.             {  
  5.                 string exeFilePath = null;  
  6.                 string tempFilePath = this.txtFilePath.Text.Trim();  
  7.                 exeFilePath = Application.StartupPath + "<a href="file://commandttest.exe/" rel="nofollow">\\Command\\ttest.exe</a>";</p><p style="TEXT-INDENT: 2em">  
  8.                 // 执行exe文件  
  9.                 Process process = new Process();  
  10.                 process.StartInfo.FileName = exeFilePath;  
  11.                 //process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;  
  12.                 process.StartInfo.UseShellExecute = false;  
  13.                 process.StartInfo.CreateNoWindow = true;  
  14.                 process.StartInfo.Arguments = "\"" + tempFilePath + "\" \"" + resultFilePath + "\"";  
  15.                 process.Start();  
  16.                 // 如果该进程没有执行完毕,让下一个进程等待  
  17.                 <span style="color:#3366ff;"><strong>while (!process.HasExited)  
  18.                 {  
  19.                     Thread.Sleep(1);  
  20.                 }</strong></span></p><p style="TEXT-INDENT: 2em">         // 将resultFilePath 文件中的数据读入到DataTable中  
  21.                 readDataFile(resultDataTable, resultFilePath);  
  22.             }  
  23.             catch (IOException ioEx)  
  24.             {  
  25.                 throw ioEx;  
  26.             }  
  27.             catch (Exception ex)  
  28.             {  
  29.                 throw ex;  
  30.             }  
  31.         }</p>  

用法: rundll32 printui.dll,PrintUIEntry [options] [@commandfile] /a[file] 二进制文件名 /b[name] 基本打印机名 /c[name] 如果操作在远程机器上,unc 机器名 /dl 删除本地打印机 /dn 删除网络打印机连接 /dd 删除打印机驱动程序 /e 显示打印首选项 /f[file] inf 文件或输出文件 /ga 添加每个机器打印机连接 /ge 枚举每个机器打印机连接 /gd 删除每个机器打印机连接 /h[arch] 下列驱动程序体系结构之一,Alpha | Intel | IA64 | x64 /ia 用 inf 文件安装打印机驱动程序 /id 用添加打印机驱动程序向导安装打印机驱动程序 /if 用 inf 文件安装打印机 /ii 用带 inf 文件的添加打印机向导安装打印机 /il 用添加打印机向导安装打印机 /in 添加网络打印机连接 /j[provider] 打印提供程序名称 /k 将测试页打印到指定的打印机,不能安装打印机时的命令组合 /l[path] 打印机驱动程序源路径 /m[model] 打印机驱动程序型号名 /n[name] 打印机名 /o 显示打印机队列查看 /p 显示打印机属性 /q 安静模式,不显示错误信息 /r[port] 端口名 /s 显示服务器属性 /Ss 将打印机设置存到一个文件 /Sr 从一个文件还原打印机设置 储存或还原必须放在命令结尾的打印机设置选项标志: 2 PRINTER_INFO_2 7 PRINTER_INFO_7 c 颜色配置文件 d 打印机数据 s 安全描述符 g 全局 DevMode m 最低设置 u 用户 DevMode r 解决名称冲突 f 强制使用名称 p 解析端口 /u 如果已安装,则使用现有的打印机驱动程序 /t[#] 起始的以零为基础的索引页 /v[version] 驱动程序版本属于下列中的一个: Windows 95、98 和 ME | Windows NT 4.0 | Windows NT 4.0 或 2000 | Windows 2000 或 XP| Windows XP /w 如果指定的驱动程序不在 inf 中,则提示用户 /y 将打印机设为默认打印机 /Xg 获得打印机设置 /Xs 设定打印机设置 /z 不要自动共享这台打印机 /Z 不要自动生成打印机名 /K 更改 /v 和 /h 的意义来将 Windows x64 和 Windows IA64 | Windows NT x86 | Windows NT Alpha_AXP | Windows 4.0 分别接受为 0、1、2、3 /Z 共享这台打印机,只能跟 /if 选项一起使用 /? 帮助信息 @[file] 命令行参数文件 /Mw[message] 确认命令之前显示警告消息 /Mq[message] 确认命令之前显示确认消息 /W[flags] 指定向导(APW 和 APDW)的标志和切换 r 使向导可以从上一页重新启动 /G[flags] 指定全局标志和切换 w 抑制安装程序驱动程序警告 UI (超级静声模式) 例如: 运行服务器属性: rundll32 printui .dll ,PrintUIEntry /s /t1 /n\\machine 运行打印机属性: rundll32 printui .dll ,PrintUIEntry /p /n\\machine\printer 在本地运行添加打印机向导: rundll32 printui .dll ,PrintUIEntry /il 在 \\machine: rundll32 printui .dll ,PrintUIEntry /il /c\\Machine 运行添加打印机向导 运行队列查看: rundll32 printui .dll ,PrintUIEntry /o /n\\machine\printer 运行 inf 安装: rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /f %windir%\inf\ntprint.inf /r "lpt1:" /m "AGFA-AccuSet v52.3" 使用 inf 运行添加打印机向导: rundll32printui.dll,PrintUIEntry/ii/%windir%\inf\ntprint.in 添加每个机器打印机连接: rundll32 printui.dll,PrintUIEntry /ga /c\\machine /n\\machine\printer /j"LanMan Print Services" 删除每个机器打印机连接: rundll32 printui.dll,PrintUIEntry /gd /c\\machine /n\\machine\printer 枚举每个机器打印机连接: rundll32 printui.dll,PrintUIEntry /ge /c\\machine 用 inf 添加打印机驱动程序: rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "AGFA-AccuSet v52.3" /h "Intel" /v "Windows 2000 或 XP" /f %windir%\inf\ntprint.inf 用 inf 添加打印机驱动程序: rundll32 printui.dll,PrintUIEntry /ia /K /c\\machine /m "AGFA-AccuSet v52.3" /h "Windows NT x86" /v 3 删除打印机驱动程序: rundll32 printui.dll,PrintUIEntry /dd /c\\machine /m "AGFA-AccuSet v52.3" /h "Intel" /v "Windows 2000 或 XP" 删除打印机驱动程序: rundll32 printui.dll,PrintUIEntry /dd /K /c\\machine /m "AGFA-AccuSet v52.3" /h "Windows NT x86" /v 3 将打印机设为默认打印机: rundll32 printui.dll,PrintUIEntry /y /n "printer" 设置打印机注解: rundll32 printui.dll,PrintUIEntry /Xs /n "printer" comment "My Cool Printer" 取得打印机设置: rundll32 printui.dll,PrintUIEntry /Xg /n "printer" 取得文件中的打印机设置保存结果: rundll32 printui.dll,PrintUIEntry /f "results.txt" /Xg /n "printer" 设置打印机设置命令使用: rundll32printui.dll,PrintUIEntry/Xs/n"printer"? 将所有打印机设置存入一个文件: rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat" 从一个文件还原所有打印机设置: rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" 将二级打印机信息存入一个文件: rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat" 2 从一个文件还原打印机安全描述符: rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" s 从一个文件还原打印机全局 devmode 和打印机数据: rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" g d 从文件最少设置还原并分析端口名: rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" m p
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值