阅读:1983回复:12
请教在WDM驱动中如何更新本机的IP地址?
是否是使用RtlQueryRegistryValues和RtlWriteRegistryValue即可实现?如何实现?请指教。
|
|
最新喜欢:![]() |
沙发#
发布于:2003-05-21 15:20
谢谢
|
|
|
板凳#
发布于:2003-05-19 10:22
为什么进到这个贴子后总是说我还没有登录论坛,在回复的时候又告诉我已经登录了?我正在想办法给你分。
|
|
地板#
发布于:2003-05-17 20:58
给分吧
|
|
|
地下室#
发布于:2003-05-17 15:39
给你发了封邮件,请看一下。
|
|
5楼#
发布于:2003-05-16 21:06
L\"HKLM\\\\Software\\\\Microsoft\\\\Windows NT\\\\CurrentVersion\\\\NetworkCards\\\\1
可能网卡编号不一定是1,特别是以前装过网卡的情况下 UnicodeName.Buffer = NULL; UnicodeName.MaximumLength = 0; UnicodeName.Length = 0; 最好给一个确定的buffer, QueryTable[0].EntryContext = &UnicodeName; 因为返回时不一定会分配buffer. 这个程序我写了4天,主要难度在于Unicode_string的使用上。 Reg_Multi_Sz 需要在要写入的字符串以/0/0/0/0结尾。否则会写入乱码。 你是哪里的公司? |
|
|
6楼#
发布于:2003-05-16 20:53
发邮件给我wzxyilove@163.net
|
|
|
7楼#
发布于:2003-05-16 14:09
能否具体指正一下?
|
|
8楼#
发布于:2003-05-16 13:47
路径有问题,在Nt/2000/Xp下要修改网卡下的IP才有用。
|
|
|
9楼#
发布于:2003-05-16 13:42
你这样也实现不了。错误太多。
|
|
|
10楼#
发布于:2003-05-16 13:38
我不是这样实现的,请详细说说你的想法。你想在什么时候改IP.或发邮件给我。
|
|
|
11楼#
发布于:2003-05-15 15:41
本人试着写了一下,请帮忙改正。
1)编译时提示:\'UNICODE_STRING\' illegal use of this type as an expression, 请问为什么。 NTSTATUS MC_WriteIP(PWSTR NewIPAddress) { PWSTR QRegistryPath = L\"HKLM\\\\Software\\\\Microsoft\\\\Windows NT\\\\CurrentVersion\\\\NetworkCards\\\\1\"; RTL_QUERY_REGISTRY_TABLE QueryTable[2]; RtlZeroMemory(QueryTable,sizeof(QueryTable)); UNICODE_STRING UnicodeName; UnicodeName.Buffer = NULL; UnicodeName.MaximumLength = 0; UnicodeName.Length = 0; QueryTable[0].Name = L\"ServiceName\"; QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT; QueryTable[0].EntryContext = &UnicodeName; NTSTATUS status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, QRegistryPath,QueryTable,NULL,NULL); if(status!=STATUS_SUCCESS) return status; PWSTR WRegistryPath = L\"HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CorrentControlSet\\\\Services\\\\Tcpip\\\\Patameters\\\\Interfaces\"; PWSTR WriteRegistryPath = (PWSTR)ExAllocatePool(PagedPool,sizeof(*WRegistryPath)+sizeof(*UnicodeName.Buffer)); RtlCopyMemory(WriteRegistryPath,WRegistryPath,sizeof(*WRegistryPath)); RtlCopyMemory(WriteRegistryPath+sizeof(*WRegistryPath),&UnicodeName,sizeof(UnicodeName)); RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,WriteRegistryPath,L\"IPAddress\",REG_MULTI_SZ, NewIPAddress,sizeof(ValueData)); //释放内存 ExFreePool(UnicodeName.Buffer); ExFreePool(QueryTable); ExFreePool(WriteRegistryPath); return STATUS_SUCCESS; } |
|
12楼#
发布于:2003-05-14 11:59
就是这两个函数,实现起来有点难度
|
|
|