怎么根据网卡的名称或者设备号等信息,重启一个网卡
发布时间:2011-06-28 14:04:12 文章来源:www.iduyao.cn 采编人员:星星草
如何根据网卡的名称或者设备号等信息,重启一个网卡
在网上搜索了很久,但是还是没有解决,决定提问吧!
如何根据网卡的名称或者设备号等信息,重启一个网卡。我搜索了很多资料,但是好像都不是很详细,没有办法使用,只好自己提问了。
外一问:如何更改当前用户的用户名?
获取我知道用API函数
//---------------------------------------
//获得当前用户名字符串函数
String GetUsername()
{
String UserName ;
char *username = new char[100] ;
unsigned long *size = new unsigned long[10] ;
if(GetUserName(username,size)) //获得当前用户名 UserName = AnsiString(username) ;
delete[] username ;
delete[] size ;
return UserName ;
}
//---------------------------------------
------解决方案--------------------
在google以及csdn上搜索了一下关于网卡禁用的程序,发现所示用的方法都一样,都是使用SetupAPI相关函数,本人也用同样方法写了一个程序,但是发现一个问题(在2k以及XP下都有),使用程序启用和禁用网卡都很正常,但如果是手工禁用网卡(在设备管理器中选择网卡,并停用),则无法用程序启用,而程序却报告启用成功,事实上此时网卡无法使用。本人登陆OS是Administrator身份。现将程序贴上,希望大家指点迷津。
#include <windows.h>
#include <SetupAPI.h>
#include <stdio.h>
#include <tchar.h>
#pragma comment(lib, "setupapi.lib ")
DWORD CtrlNetcard(BOOL bStatus);
void _tmain(int arg, TCHAR** argv)
{
BOOL b = FALSE;
DWORD err = 0;
if(2 == arg)
{
argv++;
if(!_tcsicmp(TEXT( "enable "), *argv))
{
b = TRUE;
err = CtrlNetcard(TRUE);
}
else if(!_tcsicmp(TEXT( "disable "), *argv))
{
b = FALSE;
err = CtrlNetcard(FALSE);
}
else
{
goto main_end;
}
_tprintf( "\n%s NetAdapter %s !\n ",
b ? TEXT( "Enable ") : TEXT( "Disable "),
err ? TEXT( "fail ") : TEXT( "success "));
return;
}
main_end:
_tprintf(TEXT( "\nenable NetCard: enable "));
_tprintf(TEXT( "\ndisable NetCard: disable\n "));
}
DWORD CtrlNetcard(BOOL bStatus)
{
LPCTSTR HardwareId = TEXT( "{4D36E972-E325-11CE-BFC1-08002BE10318} ");
GUID g = {0X4D36E972, 0XE325, 0X11CE, {0XBF, 0XC1, 0X08, 0X00, 0X2B, 0XE1, 0X03, 0X18}};
DWORD NewState = 0;
//调用ddk函数,来禁用网卡
DWORD i = 0, err = 0;
HDEVINFO hDevInfo = NULL;
SP_DEVINFO_DATA spDevInfoData = {0};
NewState = bStatus ? DICS_ENABLE : DICS_DISABLE;
//访问系统的硬件库
hDevInfo = SetupDiGetClassDevs(NULL, TEXT( "PCI "), NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
if(INVALID_HANDLE_VALUE == hDevInfo)
{
_tprintf(TEXT( "访问系统硬件出错! "));
return GetLastError();
}
//枚举硬件,获得需要的接口
spDevInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
memcmp(&(spDevInfoData.ClassGuid), &g, sizeof(GUID));
for(i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData); i++)
{
PBYTE PropertyBuffer = NULL;
DWORD PropertyBufferSize = 0;
//获得硬件的属性值
while(!SetupDiGetDeviceRegistryProperty(
hDevInfo,
&spDevInfoData,
SPDRP_CLASSGUID,
NULL,
PropertyBuffer,
PropertyBufferSize,
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
C#项目中如何更改项目保存的文件夹名?
求解。。
------解决方案--------------------
好像需要重构吧,同样求高人解答。
------...
-
C#中让TextBox只能输入数字的问题
我用的如下的代码:
static private Regex r = new Regex("^[0-9]{1,}$ ");
...
-
带数据库的程序打包注意什么?
打的包出错:Error:System.InvalidOperationException: ExecuteReader 要求已打开且可用的连接。连接的...
-
想学习一下网络程序开发 请给推荐几本书
学习基于http协议的程序开发 比如获取网页 分析网页 模拟网页操作 下载上传文档等知识 ...
-
qq的安装包是用什么工具?
想用.net制作一个想qq一样比较漂亮的安装包。有例子最好
------解决方案--------------------
新建->安...
-
C# 写的windows服务 调用 C++ dll 的问题
我封装了一个dll
用一个普通的winform程序 调用的时候没 问题。
但是放在C#写的服务程...
-
在VS2005中怎么调出 解决方案 那个图标?(图示)求解释~~~
这是我用的VS
这是我在教学视频上看到的VS
------解决方案------------...
-
寻友
有人在自学c#编程吗,可以互相认识一下,以后共同探讨学习中的问题……
------解决方案--------------------
朋友多了,路好走~
...
-
急!急!急!C#代码
怎样将数据库中的数据动态加载到Treeview控件中
------解决方案--------------------
C# code
void CreateTree(T...
-
救急??????????????????
哪位高手帮我一下,在C#中怎么写关于鼠标和键盘监听事件,我的程序就差监听鼠标和键盘是否动,然后定时关机这个功能了,请高手指点,...