'=========================================================================== ' Subject: NETWORK INFO UTILITY Date: 06-29-98 (16:58) ' Author: Dave Navarro, Jr. Code: PBCC ' Origin: dave@powerbasic.com Packet: PBCC.ABC '=========================================================================== '============================================================================== ' ' Network Info Utility for PB/CC 1.0 ' Copyright (c) 1998 by PowerBASIC, Inc. ' ' Returns information about the current logged in user. ' ' IMPORTANT: This program only works in Windows NT! The network API calls ' used are not present in Windows 95 or 98. ' '============================================================================== $DIM ALL $INCLUDE "WIN32API.INC" '============================================================================== FUNCTION WinErrMessage(BYVAL x AS LONG) AS STRING LOCAL buffer AS ASCIIZ * 64 FormatMessage %FORMAT_MESSAGE_FROM_SYSTEM, BYVAL %NULL, x, %NULL, buffer, SIZEOF(buffer), BYVAL %NULL IF LEN(buffer) THEN FUNCTION = buffer ELSE FUNCTION = FORMAT$(x) END IF END FUNCTION FUNCTION StrToAnsi(BYVAL u AS LONG) AS STRING DIM Buffer AS STRING DIM x AS STRING DIM l AS LONG l = lstrlenW(BYVAL u) x = PEEK$(u, l * 2) Buffer = SPACE$(LEN(x) \ 2) WideCharToMultiByte %CP_ACP, _ ' code page %NULL, _ ' performance and mapping flags BYVAL STRPTR(x), _ ' Unicode string to convert LEN(x), _ ' len of Unicode string BYVAL STRPTR(Buffer), _ ' buffer for ANSI string LEN(Buffer), _ ' len of ANSI buffer BYVAL %NULL, _ ' default for unmappable chars BYVAL %NULL ' default flag IF LEN(Buffer) = 0 THEN Buffer = "[none]" END IF FUNCTION = RTRIM$(Buffer) END FUNCTION FUNCTION StrToUnicode(BYVAL x AS STRING) AS STRING DIM Buffer AS STRING Buffer = SPACE$(LEN(x) * 2) MultiByteToWideChar %CP_ACP, _ ' code page %NULL, _ ' performance and mapping flags BYVAL STRPTR(x), _ ' ANSI string to convert LEN(x), _ ' len of ANSI string BYVAL STRPTR(Buffer), _ ' buffer for Unicode string LEN(Buffer) ' len of Unicode buffer FUNCTION = Buffer END FUNCTION '============================================================================== FUNCTION WinMain (BYVAL CurInst&, _ BYVAL PrvInst&, _ CmdLine AS ASCIIZ PTR, _ BYVAL CmdShow&) EXPORT AS LONG LOCAL u AS ASCIIZ * 256 LOCAL ni AS USER_INFO_3 PTR LOCAL si AS SERVER_INFO_102 PTR LOCAL wkui AS WKSTA_USER_INFO_1 PTR LOCAL nRet AS LONG LOCAL uW AS ASCIIZ * 512 LOCAL tmp AS STRING GetUserName u, 256 STDOUT "Network information for user " & CHR$(34) & u & CHR$(34) STDOUT "Copyright (c) 1998 by PowerBASIC, Inc." STDOUT "" nRet = NetWkstaUserGetInfo(BYVAL %NULL, 1, wkui) IF nRet THEN STDOUT "Error: " & WinErrMessage$(nRet) EXIT FUNCTION END IF STDOUT " Logon Domain: " & StrToAnsi(@wkui.wkui_logon_domain) STDOUT " Logon Server: \\" & StrToAnsi(@wkui.wkui_logon_server) nRet = NetWkstaGetInfo(BYVAL %NULL, 102, si) IF nRet THEN STDOUT "" STDOUT "Error: " & WinErrMessage$(nRet) EXIT FUNCTION END IF STDOUT " System name: \\" & StrToAnsi(@si.sv_name) STDOUT " Hidden: "; IF @si.sv_hidden = %SV_HIDDEN THEN STDOUT "Yes" ELSE STDOUT "No" END IF STDOUT " Comment: " & StrToAnsi(@si.sv_comment) IF @si.sv_type THEN STDOUT " Type: "; IF BIT(@si.sv_type, 1) THEN STDOUT "Workstation" ELSEIF BIT(@si.sv_type, 2) THEN STDOUT "Server" ELSEIF BIT(@si.sv_type, 3) THEN STDOUT "SQL Server" ELSEIF BIT(@si.sv_type, 4) THEN STDOUT "Primary Domain Controller (PDC)" ELSEIF BIT(@si.sv_type, 5) THEN STDOUT "Backup Domain Controller (BDC)" ELSEIF BIT(@si.sv_type, 6) THEN STDOUT "Time Server" ELSEIF BIT(@si.sv_type, 7) THEN STDOUT "Apple File Protocol Server" ELSEIF BIT(@si.sv_type, 8) THEN STDOUT "Novell Server" ELSEIF BIT(@si.sv_type, 9) THEN STDOUT "Domain Member" ELSEIF BIT(@si.sv_type, 15) THEN STDOUT "Windows NT" END IF END IF uW = StrToUnicode(u) nRet = NetUserGetInfo(BYVAL %NULL, uW, 3, ni) IF nRet THEN STDOUT "" STDOUT "Error: " & WinErrMessage$(nRet) EXIT FUNCTION END IF STDOUT "" STDOUT " Account name: " & StrToAnsi(@ni.uName) STDOUT " Full name: " & StrToAnsi(@ni.FullName) STDOUT " Comment: " & StrToAnsi(@ni.Comment) SELECT CASE @ni.Privilege CASE %USER_PRIV_GUEST : tmp = "Guest" CASE %USER_PRIV_USER : tmp = "User" CASE %USER_PRIV_ADMIN : tmp = "Administrator" CASE ELSE : tmp = "Unknown" END SELECT STDOUT " Privilege: " & tmp STDOUT "Home directory: " & StrToAnsi(@ni.HomeDir) STDOUT " Script Path: " & StrToAnsi(@ni.ScriptPath) STDOUT " Profile: " & StrToAnsi(@ni.Profile) NetApiBufferFree ni NetApiBufferFree si NetApiBufferFree wkui END FUNCTION