如何以编程方式打开自定义控制面板,例如custom.cpl?具体而言,当作为32位应用程序运行时,如何打开64位cpl?
如何以编程方式打开自定义控制面板,例如custom.cpl?具体而言,当作为32位应用程序运行时,如何打开64位cpl?
由于我在SO上没有找到一个好的答案,以下是我的研究解决方案:
::ShellExecute(m_hWnd, NULL, _T("control.exe"), _T("access.cpl"), NULL, SW_SHOW);
Vista增加了对规范名称的支持,因此您无需硬编码dll文件名和选项卡索引
例如:WinExec(“%systemroot%\ system32 \ control.exe /name Microsoft.WindowsUpdate”,SW_NORMAL);
(名称始终为英语)
请参见MSDN以获取列表
XP / 2000支持“control.exe mouse”和其他一些关键字,请参见同一MSDN页面以获取列表(您可以通过在control.exe上运行strings来找到一些未记录的内容)
只需使用以下方法...
ProcessStartInfo startInfo = new ProcessStartInfo("appwiz.cpl");
startInfo.UseShellExecute = true;
Process.Start(startInfo);
UseShellExecute
部分很重要。我需要将一个旧的 .NET 项目更新到 .NET 6,这个更改对我来说是必需的,而以前并不需要。 - Bradpublic Form1()
{
InitializeComponent();
}
#region Variables
Process p;
#endregion Variables
[...]
void myMethod()
{
try
{
p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.StandardInput.WriteLine("start control");
p.StandardInput.Flush();
p.StandardInput.Close();
Console.WriteLine(p.StandardOutput.ReadToEnd());
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
步骤1: 从计算机中读取系统目录。 步骤2: 使用进程启动控制面板。
**Process.Start(System.Environment.SystemDirectory + @"\appwiz.cpl");**