操作系统 : Windows 10_x64 [版本 10.0.19042.685]

Windows下可以通过网卡共享进行上网,但是需要在网卡的属性里面进行设置,需要在视窗界面进行操作,不能实现自动化。

查了下资料,可以通过INetSharingManager来实现,原理很简单: 模拟手工的动作自动化操作。

示例代码如下:

HRESULT shareNet(INetSharingManager* pNSM, const char* srcName, const char* dstName)
{
INetConnection * pNC = NULL;
INetSharingConfiguration * pNSC = NULL;
IEnumVARIANT * pEV = NULL;
IUnknown * pUnk = NULL;
INetSharingEveryConnectionCollection * pNSECC = NULL; HRESULT hr = pNSM->get_EnumEveryConnection(&pNSECC);
VARIANT v;
VariantInit(&v); if (!pNSECC)
{
wprintf(L"failed to get EveryConnectionCollection!\r\n");
return NULL;
} hr = pNSECC->get__NewEnum(&pUnk);
if (pUnk)
{
hr = pUnk->QueryInterface(__uuidof(IEnumVARIANT), (void**)&pEV);
pUnk->Release();
} wprintf(L"----------------------------------------------------------\n");
while (S_OK == pEV->Next(1, &v, NULL))
{
if (V_VT(&v) == VT_UNKNOWN)
{
V_UNKNOWN(&v)->QueryInterface(__uuidof(INetConnection), (void**)&pNC);
if (pNC)
{
NETCON_PROPERTIES* pNP = NULL;
pNC->GetProperties(&pNP);
setlocale(LC_ALL, "chs"); wprintf(L"pszwName--%s\n", pNP->pszwName);
wprintf(L"pszwDeviceName--%s\n", pNP->pszwDeviceName);
wprintf(L"Status--%d\n", pNP->Status);
wprintf(L"\n"); //continue;
if (pNP->Status != NCS_CONNECTED) continue;
std::string tmpName = CW2A(pNP->pszwName);
//printf("###### |%s| : |%s|\r\n", tmpName.c_str(),(char*)nicName); hr = pNSM->get_INetSharingConfigurationForINetConnection(pNC, &pNSC);
if (!strcmp(tmpName.c_str(), (char*)srcName))
{
printf("**************find nic srcName : %s\r\n", (char*)srcName);
hr = pNSC->DisableSharing();
Sleep(500);
//getchar();
hr = pNSC->EnableSharing(ICSSHARINGTYPE_PUBLIC);
}
pNSC->Release(); hr = pNSM->get_INetSharingConfigurationForINetConnection(pNC, &pNSC);
if (!strcmp(tmpName.c_str(), (char*)dstName))
{
printf("**************find nic dstName : %s\r\n", (char*)dstName);
hr = pNSC->DisableSharing();
Sleep(500);
hr = pNSC->EnableSharing(ICSSHARINGTYPE_PRIVATE);
}
pNSC->Release();
}
}
}
return hr;
}

添加相关代码并使用VS2015编译:

需要管理员权限运行,Release目录有可执行程序

使用方法:

ConsoleApplication1.exe 能上网的网卡名称 需要上网的网卡名称

比如:

ConsoleApplication1.exe WLAN "以太网 4"

当然也可以使用批处理文件,但需要注意下文件编码使用GBK 编码。

本文涉代码及预编译程序下载地址:https://pan.baidu.com/s/1sRKwYDP_gFMegeK5rTP3rg

可关注微信公众号(聊聊博文)后回复 2021012301 获取提取码。

通过程序自动设置网卡的“internet共享”选项的更多相关文章

  1. linux udhcpc 后无法自动设置网卡ip

    arm 主板用 udhcpc 获取租赁的空闲的ip后,并没有直接设置在网卡上. 查了一下相关原因,是因为虽然已经获取了ip, 但是并没有通过脚本去设置这个IP. 在 busybox 里面有相关的脚本要 ...

  2. IIS下Asp.Net应用程序多进程设置及Session共享

    背景: 目前项目中在单个进程的应用程序经常会遇到w3c.exe崩溃的情况,于是就设想是否可以通过IIS多进程的方案来避免出现该问题. 于是搜了下“怎么实现多进程的方案”,找到了这篇文章:http:// ...

  3. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

  4. 【转】WPF: 自动设置Owner的ShowDialog 适用于MVVM

    原文地址:http://www.mgenware.com/blog/?p=339 WPF中的Windows的ShowDialog方法并没有提供设置Owner的参数,开发者需要在ShowDialog前设 ...

  5. 如何将ASP.NET MVC所有参数均自动设置为默认

    今天看到CSDN上有个问题觉得有点意思:"可不可以ASP.NET MVC所有参数均自动设置为默认" public class HomeController : Controller ...

  6. php利用svn hooks将程序自动发布到测试环境

    利用svn hooks将php程序自动发布到测试环境 复制仓库hooks目录下的post-commit.tmpl为post-commit cp post-commit.tmpl post-commit ...

  7. C#实现通过程序自动抓取远程Web网页信息的代码

    http://www.jb51.net/article/9499.htm 通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序.比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名.分析系统在 ...

  8. 使用批处理文件,自动设置计算机IP地址

    WIN7批处理设置IP地址不成功,显示“The filename, directory name, or volume label syntax is incorrect.”错误, 解决方法:将“本地 ...

  9. 使用mii-tool设置网卡速率

    转载:http://washion2008.blog.163.com/blog/static/144227201001711537158/ 在ubuntu中,mii-tool 是属于net-tools ...

  10. 让.net程序自动运行在管理员权限下

    原文:让.net程序自动运行在管理员权限下 如何让.net程序自动运行在管理员权限下 VS2010 c# 编译的WINFORM程序 在Win7 以管理员身份运行 windows 7和vista提高的系 ...

随机推荐

  1. Clock Domain Crossing

    Clock Domain Crossing CDC问题主要有亚稳态问题,多比特信号同步,握手信号同步,异步Fifo等 Topics Describe the SoC Design Issues Und ...

  2. ChatGPT-NextWeb部署和调试打造属于自己的GPT

    首先我关注这个项目有一段时间了,不得不说作者和他的社区真的很猛! 首先这个项目截至目前已经有了40.9K的Start了,Fork也已经有了38.1K了,这个数据真的超级牛批了. 那么我们来看一下这款号 ...

  3. 海思Hi35xx 实现本地和远程升级程序的方法

    前言 嵌入式linux设备要进行软件升级有很种多方式方法,总的来说可以分为本地升级和远程升级. 本地升级包括升级工具升级,存储介质升级等,远程升级是指通过网络进行程序升级. 这里介绍一种同时至此本地和 ...

  4. Qt5.9 UI设计(六)——TitleBar功能实现

    前言 上一章介绍了ControlTreeWidget 与ControlTabWidget联动的功能,这一章我们将实现自定义 TitleBar 的功能 操作步骤 修改按键图标最大和最小值 右键按键图标, ...

  5. [转帖]使用 Dumpling 和 TiDB Lightning 备份与恢复

    本文档介绍如何使用 Dumpling 和 TiDB Lightning 进行全量备份与恢复. 在备份与恢复场景中,如果需要全量备份少量数据(例如小于 50 GB),且不要求备份速度,你可以使用 Dum ...

  6. [转帖]strace分析sqlplus登录慢问题

    一. 问题分析 有时会遇到sqlplus / as sysdba登录非常慢的问题,由于还没登录,通过数据库等待事件一般看不出来啥,需要用到strace这个分析利器.strace有很多参数,后面会列出, ...

  7. [转帖]读懂什么是RDMA

    https://blog.csdn.net/tony_vip?type=blog 一.什么是RDMA1.RDMA主要体现     2.如何理解RDMA和TCP技术的区别?3.使用RDMA的好处包括: ...

  8. [转帖]十大主流Nehalem服务器横评(多图)

    https://server.51cto.com/article/201820.html 作者:佚名2010-05-25 09:52:27 运维服务器运维 除了我们的两台基准服务器之外,本次横向评测活 ...

  9. [转帖]ARM64体系结构编程与实践:基础知识

    ARM64体系结构编程与实践:基础知识 原创 异步社区 2022-03-30 12:44:16 著作权 文章标签 寄存器 体系结构 v8 ARM64体系结构 ARM 文章分类 物联网 阅读数1570 ...

  10. [转贴]细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4

    细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4 https://www.cnblogs.com/malecrab/p/5300503.html 1. U ...