//禁用 SetNetworkAdapter(False) //启用 SetNetworkAdapter(True) //添加引用system32/shell32.dll private static bool SetNetworkAdapter(bool status) { const string discVerb = "停用(&B)"; // "停用(&B)"; const string connVerb = "启用(&A)"; // "启用(&A)"; const string network = "网络连接"; //"网络连接"; const string networkConnection = "VMware Network Adapter VMnet1"; // "本地连接" string sVerb = null; if (status) { sVerb = connVerb; } else { sVerb = discVerb; } Shell32.Shell sh = new Shell32.Shell(); Shell32.Folder folder = sh.NameSpace(Shell32.ShellSpecialFolderConstants.ssfCONTROLS); try { //进入控制面板的所有选项 foreach (Shell32.FolderItem myItem in folder.Items()) { //进入网络连接 if (myItem.Name == network) { Shell32.Folder fd = (Shell32.Folder)myItem.GetFolder; foreach (Shell32.FolderItem fi in fd.Items()) { //找到本地连接 if ((fi.Name == networkConnection)) { //找本地连接的所有右键功能菜单 foreach (Shell32.FolderItemVerb Fib in fi.Verbs()) { if (Fib.Name == sVerb) { Fib.DoIt(); return true; } } } } } } } catch (Exception e) { Console.WriteLine(e.Message); return false; } return true; }
第一种出处:http://blog.csdn.net/leon_ice/article/details/4426278
再来一种方式 其实大体上是一样的 只不过第二种个人觉得比较赞 win7也适用
/// <summary>
/// 启用网络
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_StartNet_Click(object sender, EventArgs e)
{
//SetNetworkAdapter(true);
SetTest("本地连接", "启用"); // SetTest("本地连接", "禁用");
}
private void SetTest(string netWorkName, string operation)
{
Shell32.Shell shell = new Shell32.ShellClass();
Shell32.Folder folder = shell.NameSpace(49);
foreach (Shell32.FolderItem fi in folder.Items())
{
if (fi.Name != netWorkName)
continue;
Shell32.ShellFolderItem folderItem = (Shell32.ShellFolderItem)fi;
foreach (Shell32.FolderItemVerb fiv in folderItem.Verbs())
{
if (!fiv.Name.Contains(operation))
continue;
else
{
fiv.DoIt();
Thread.Sleep(1000);
break;
}
}
}
}