Page 1 of 1
RED local - detectar pc's que la componen
Posted: Wed Jun 12, 2013 12:40 pm
by rolando
Buen día,
Quisiera automatizar una aplicación para que al iniciar detecte cuantas pc's hay conectadas
en red local y el nombre de las mismas.
Estuve intentando con el testnet.prg de los samples y hay una función que edita las pc de la
red local pero abriendo un dialog que permite seleccionar la/s pc a desconectar de
red. Esta función es la WNetDisconnectDialog() y muestra algo así:

Mi consulta es: ¿existe alguna función que me devuelva los nombres y los path de las pc que integran una
red, mostrados tal como lo hace la función WNetDisconnectDialog() pero que puedan pasarse a un array?
Gracias.
Rolando

Re: RED local - detectar pc's que la componen
Posted: Wed Jun 12, 2013 1:22 pm
by cnavarro
Re: RED local - detectar pc's que la componen
Posted: Wed Jun 12, 2013 4:13 pm
by sysctrl2
has probado:
el comando CMD
NET VIEW >T.TXT
guardad en un texto las pcs. en red.
saludos.
Re: RED local - detectar pc's que la componen
Posted: Wed Jun 12, 2013 10:30 pm
by rolando
Gracias por responder.
Cristóbal, lo del link que sugieres he probado con el .bat y se bloquea
en W7 aún ejecutándolo como administrador.
César, así lo tengo implementado pero quería saber si existe alguna función
en xHarbour, FWH ó 'C' para hacer esto sin necesidad de comandos DOS.
Rolando

Re: RED local - detectar pc's que la componen
Posted: Thu Jun 13, 2013 6:59 am
by colthop
Hola Rolando:
Yo tengo algo parecido y lo que hago es con:
aFil:=adrives()
Pongo en un array las unidades de la red incluyendo todas las unidades de disco y las de disco duro local. Y con:
netDisk()
Selecciono solo las que son de red. Y Con
netRmtName()
Se el nombre de que tiene en la Red. Luego con esta información puedes hacer la ventana.
Un saludo
Carlos
Re: RED local - detectar pc's que la componen
Posted: Thu Jun 13, 2013 11:32 am
by Antonio Linares
Rolando,
Aqui se explica como obtener un montón de información valiosa usando WMI:
http://www.activexperts.com/network-monitor/windowsmanagement/wmi/samples/os/#Win32_NetworkConnection.htmPrueba este ejemplo:
Code: Select all | Expand
#include "FiveWin.ch"
function Main()
local oLoc := CreateObject ( "wbemScripting.SwbemLocator" )
local oWMI := oLoc:ConnectServer()
local aPCs := oWMI:ExecQuery( "Select * FROM Win32_NetworkLoginProfile" )
local oPC
MsgInfo( Len( aPCS ) )
for each oPC in aPCs
MsgInfo( oPC:Caption )
next
return nil
Mira toda la información que hay disponible para cada oPC:
Code: Select all | Expand
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkLoginProfile",,48)
For Each objItem in colItems
Wscript.Echo "AccountExpires: " & objItem.AccountExpires
Wscript.Echo "AuthorizationFlags: " & objItem.AuthorizationFlags
Wscript.Echo "BadPasswordCount: " & objItem.BadPasswordCount
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "CodePage: " & objItem.CodePage
Wscript.Echo "Comment: " & objItem.Comment
Wscript.Echo "CountryCode: " & objItem.CountryCode
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "FullName: " & objItem.FullName
Wscript.Echo "HomeDirectory: " & objItem.HomeDirectory
Wscript.Echo "HomeDirectoryDrive: " & objItem.HomeDirectoryDrive
Wscript.Echo "LastLogoff: " & objItem.LastLogoff
Wscript.Echo "LastLogon: " & objItem.LastLogon
Wscript.Echo "LogonHours: " & objItem.LogonHours
Wscript.Echo "LogonServer: " & objItem.LogonServer
Wscript.Echo "MaximumStorage: " & objItem.MaximumStorage
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "NumberOfLogons: " & objItem.NumberOfLogons
Wscript.Echo "Parameters: " & objItem.Parameters
Wscript.Echo "PasswordAge: " & objItem.PasswordAge
Wscript.Echo "PasswordExpires: " & objItem.PasswordExpires
Wscript.Echo "PrimaryGroupId: " & objItem.PrimaryGroupId
Wscript.Echo "Privileges: " & objItem.Privileges
Wscript.Echo "Profile: " & objItem.Profile
Wscript.Echo "ScriptPath: " & objItem.ScriptPath
Wscript.Echo "SettingID: " & objItem.SettingID
Wscript.Echo "UnitsPerWeek: " & objItem.UnitsPerWeek
Wscript.Echo "UserComment: " & objItem.UserComment
Wscript.Echo "UserId: " & objItem.UserId
Wscript.Echo "UserType: " & objItem.UserType
Wscript.Echo "Workstations: " & objItem.Workstations
Next
Re: RED local - detectar pc's que la componen
Posted: Thu Jun 13, 2013 11:34 am
by cnavarro
Muy, muy bueno
Gracias
Re: RED local - detectar pc's que la componen
Posted: Thu Jun 13, 2013 1:40 pm
by Adolfo
Un solo problema....
Desde Windows 7,8 a XP no hay como verlos en la red.
Como se soluciona.. con simples chorrocientos pasos.
Copiado de una web
-Los usuarios deben tener contraseña y no pueden dejarse en blanco, ademas:
-Debes tener activado "Compartir Archivos e Impresoras" en XP:
Inicio - Panel de Control - Firewall de Windows - Excepciones - Marca "Compartir Archivos e Impresoras"
Inicio - Panel de Control - Conexiones de Red - Boton derecho del raton sobre la conexion en cuestion - Propiedades - Marca "Compartir Impresoras y Archivos para redes Microsoft"
-Todos los usuarios deben logearse con nombre y contraseña en sus respectivos equipos al iniciar sesion
-Debes dar de alta en Windows XP al usuario de Windows 7 con el mismo nombre y contraseña que dicho usuario tienes en Windwos 7.
-Da de alta en Windows 7 al usuario de Windows XP con el mismo nombre y contraseña que dicho usuario tienes en Windwos XP.
-El grupo de trabajo debe llamarse igual en los equipos de la red
-La direcccion IP tienen que pertenecer al mismo rango
-La mascara debe ser la misma
-Ningun usuario puede denominarse igual que un equipo de la red
-Debes desmarcar la opcion de "uso compartido simple de archivos" tanto en Windows XP como en Windows 7.
En Windows XP Pro:
-Debes desmarcar la opcion (version Pro de XP) de "uso compartido simple de archivos":
(Panel de control, Opciones de carpeta, pestaña Ver, y desmarcar la casilla correspondiente "Utilizar uso compartido simple de archivos (recomendado)")
Para la version Home, podras acceder a dicha pantalla entrando en modo seguro.
En Windows 7:
Panel de Control - Iconos Grandes - Centro de Redes y Recursos compartidos - Cambiar configuracion de uso compartido avanzado - Solo comprobar, debe estar activado por defecto
No los he probado ,pero se los pase a un colega y segun su respuestas ,"le sirvio"
Re: RED local - detectar pc's que la componen
Posted: Thu Jun 13, 2013 5:13 pm
by rolando
Muchas gracias a todos por los aportes.
Siempre se aprende preguntando, sobre todo
en este grandioso foro.
Saludos.
Rolando

Re: RED local - detectar pc's que la componen
Posted: Thu Jun 13, 2013 5:32 pm
by acuellar
Con este ejemplo muestra todas las PCs del GRUPO/DOMINIO
Code: Select all | Expand
#include "FiveWin.ch"
function Main()
LOCAL oAdoCommand,oAdoConnection,oRs,aPcs:={},cPcs:=""
oAdoCommand:=CreateObject("ADODB.Command")
oAdoConnection:=CreateObject("ADODB.Connection")
oAdoConnection:Provider:="ADsDSOObject"
oAdoConnection:Open("Active Directory Provider")
oAdoCommand:ActiveConnection:=oAdoConnection
oAdoCommand:CommandText:="Select name from 'LDAP://LOSTAJIBOSHOTEL' Where objectCategory='computer'" //LOSTAJIBOSHOTEL el nombre del GRUPO/DOMINIO
oRs:=oAdoCommand:Execute()
oRs:MoveFirst()
DO WHILE !oRs:Eof()
xPC:=Alltrim(oRs:Fields("Name"):Value)
aAdd(aPcs,xPC)
cPcs+=xPC+CRLF
oRs:MoveNext()
ENDDO
?cPcs
return nil
Saludos,
Adhemar