net.exe: Lists existing NetUse connections.

This commit is contained in:
Tim Schwartz 2007-11-05 15:02:49 -06:00 committed by Alexandre Julliard
parent 25a612b8f3
commit 26b182fd92
4 changed files with 52 additions and 1 deletions

View File

@ -37,4 +37,7 @@ STRINGTABLE
STRING_STOP_SVC_SUCCESS, "The %s service was stopped successfully.\n"
STRING_STOP_SVC_FAIL, "The %s service failed to stop.\n"
STRING_HELP_USAGE, "The syntax of this command is:\n\nNET HELP command\n -or-\nNET command /HELP\n\n Commands available are:\n NET HELP NET START NET STOP\n"
STRING_NO_ENTRIES, "There are no entries in the list.\n"
STRING_USE_HEADER, "\nStatus Local Remote\n---------------------------------------------------------------\n"
STRING_USE_ENTRY, "%s %S %S Open resources: %lu\n"
}

View File

@ -4,7 +4,7 @@ SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = net.exe
APPMODE = -mconsole
IMPORTS = user32 advapi32 kernel32
IMPORTS = netapi32 user32 advapi32 kernel32
C_SRCS = net.c

View File

@ -19,6 +19,7 @@
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <lm.h>
#include "resources.h"
#define NET_START 0001
@ -36,6 +37,45 @@ int output_string(int msg, ...)
return 0;
}
static BOOL net_use(int argc, char *argv[])
{
USE_INFO_2 *buffer, *connection;
DWORD read, total, resume_handle, rc, i;
const char *status_description[] = { "OK", "Paused", "Disconnected", "An error occurred",
"A network error occurred", "Connection is being made",
"Reconnecting" };
resume_handle = 0;
buffer = NULL;
if(argc<3)
{
do {
rc = NetUseEnum(NULL, 2, (BYTE **) &buffer, 2048, &read, &total, &resume_handle);
if (rc != ERROR_MORE_DATA && rc != ERROR_SUCCESS)
{
break;
}
if(total == 0)
{
output_string(STRING_NO_ENTRIES);
break;
}
output_string(STRING_USE_HEADER);
for (i = 0, connection = buffer; i < read; ++i, ++connection)
output_string(STRING_USE_ENTRY, status_description[connection->ui2_status], connection->ui2_local,
connection->ui2_remote, connection->ui2_refcount);
if (buffer != NULL) NetApiBufferFree(buffer);
} while (rc == ERROR_MORE_DATA);
return TRUE;
}
return FALSE;
}
static BOOL StopService(SC_HANDLE SCManager, SC_HANDLE serviceHandle)
{
LPENUM_SERVICE_STATUS dependencies = NULL;
@ -159,5 +199,10 @@ int main(int argc, char *argv[])
return 0;
}
if(!strcasecmp(argv[1], "use"))
{
if(!net_use(argc, argv)) return 1;
}
return 0;
}

View File

@ -30,3 +30,6 @@
#define STRING_STOP_SVC_SUCCESS 112
#define STRING_STOP_SVC_FAIL 113
#define STRING_HELP_USAGE 114
#define STRING_NO_ENTRIES 115
#define STRING_USE_HEADER 116
#define STRING_USE_ENTRY 117