方法 1:使用 ShellExecute
打开设置 URI
#include <windows.h> int main() { // 直接打开代理设置页面 ShellExecute( NULL, L"open", L"ms-settings:network-proxy", NULL, NULL, SW_SHOWNORMAL ); return 0; }
方法 2:使用控制面板命令(传统方式)
#include <windows.h> int main() { // 打开控制面板的网络设置并定位到代理 ShellExecute( NULL, L"open", L"control.exe", L"/name Microsoft.NetworkAndSharingCenter /page Advanced", NULL, SW_SHOWNORMAL ); return 0; }
最佳实践(推荐的现代方法):
#include <windows.h> #include <shlobj.h> // 用于 SHOpenFolderAndSelectItems void OpenProxySettings() { // Windows 10/11 现代设置 ShellExecuteW(NULL, L"open", L"ms-settings:network-proxy", NULL, NULL, SW_SHOWNORMAL); // 备用方法:传统控制面板路径 // ShellExecuteW(NULL, L"open", L"inetcpl.cpl", L",4", NULL, SW_SHOWNORMAL); // 另一种替代方案:使用 rundll32 // system("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,4"); } int main() { OpenProxySettings(); return 0; }
方法详解:
-
ms-settings:network-proxy
URI (推荐)- 这是 Windows 10/11 的现代设置页面专属 URI
- 直接打开到:设置 → 网络和 Internet → 代理
- 最简洁可靠的方法
-
控制面板参数:
ShellExecute(NULL, L"open", L"control.exe", L"/name Microsoft.NetworkAndSharingCenter /page Advanced", NULL, SW_SHOWNORMAL);
- 打开传统网络设置
- 需要手动导航到代理设置
-
Internet 属性对话框:
ShellExecute(NULL, L"runas", L"inetcpl.cpl", L",4", NULL, SW_SHOWNORMAL);
inetcpl.cpl
是 Internet 属性控制面板项,4
参数直接打开"连接"选项卡- 需要额外点击"局域网设置"进入代理配置
注意事项:
- 对于 Windows 10/11,推荐使用
ms-settings:network-proxy
URI - 所有方法都需要包含
<windows.h>
头文件 - 如果使用 Unicode 构建,确保使用宽字符版本(
ShellExecuteW
) - 可能需要管理员权限修改代理设置,但查看不需要
- 这些命令在所有 Windows 10/11 版本中有效
完整示例(现代方法):
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 直接打开代理设置页面 ShellExecuteW( NULL, L"open", L"ms-settings:network-proxy", NULL, NULL, SW_SHOWNORMAL ); return 0; }
这段代码会在执行时立即打开 Windows 设置应用的代理配置页面