分类: WINDOWS
2005-10-17 16:00:51
第七节:重新找回用户名
重新找回和一网络资源或网络名相关连的用户名
CHAR szUserName[80];
DWORD dwResult, cchBuff = 80;
dwResult = WNetGetUser("z:",(LPSTR) szUserName,&cchBuff);
//函数WNetGetUser说明
//DWORD WNetGetUser(
// LPCTSTR lpName, // 指向本地名
// LPTSTR lpUserName, // 指向将得到的用户名
// LPDWORD lpnLength // 缓冲的大小
//);
if(dwResult == NO_ERROR) //无错
TextOut(hdc, 10, 10,
(LPSTR) szUserName,
lstrlen((LPSTR) szUserName));
else {
NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetGetUser");
return FALSE;
}
//错误有4种
//1.ERROR_NOT_CONNECTED 指lpName定义的名称非重定向设备或已连接的网络名
//2.ERROR_MORE_DATA 指并发调用中有更多可用的
//3.ERROR_NO_NETWORK 指网络不可用
//4.ERROR_EXTENDED_ERROR 特殊网络错误出现,必须用函数WNetGetLastError得到细节
//5.ERROR_NO_NET_OR_BAD_PATH无网络提供者
;====汇编语言描述(BY 谢小荣)=====
AsmGetWNetUser PROTO :DWORD,:DWORD,:DWORD
.data?
asmgetwnetuser_0 DB "连好",0
asmgetwnetuser_1 db "定义的名称非重定向设备或已连接的网络名",0
asmgetwnetuser_2 db "并发调用中有更多可用的",0
asmgetwnetuser_3 db "网络不可用",0
asmgetwnetuser_4 db "特殊网络错误出现,必须用函数WNetGetLastError得到细节",0
asmgetwnetuser_5 DB "无提供者认识已建立连接的本地名",0
.data
szUserName db 80 dup(0)
.code
AsmGetWNetUser proc hwnd:DWORD,hdc:DWORD,lpdevname:DWORD
invoke WNetGetUser,lpdevname,addr szUserName,80
.IF EAX==NO_ERROR
invoke TextOut,hdc,10,10, addr asmgetwnetuser_0,8
mov eax,0
.ELSE
.IF EAX==ERROR_NOT_CONNECTED
invoke TextOut,hdc,10,10, addr asmgetwnetuser_1,8
.ELSEIF EAX==ERROR_MORE_DATA
invoke TextOut,hdc,10,10, addr asmgetwnetuser_2,8
.ELSEIF EAX==ERROR_NO_NETWORK
invoke TextOut,hdc,10,10, addr asmgetwnetuser_3,8
.ELSEIF EAX==ERROR_NO_NET_OR_BAD_PATH
invoke TextOut,hdc,10,10, addr asmgetwnetuser_5,8
.ELSE EAX==ERROR_EXTENDED_ERROR
invoke TextOut,hdc,10,10, addr asmgetwnetuser_4,8
.ENDIF
mov eax,1
.ENDIF
ret
AsmGetWNetUser endp