Saber el nombre del servidor de dominio con código VFP

Hola javi recurro a vos más que nada para que me saques una duda si es que puedes..
¿Existe la Posibilidad de saber el nombre del Servidor de dominio al que mi maquina esta Conectada? No el nombre del dominio, sino el Nombre de la Maquina servidor de Dominio.
Muchas Gracias como Siempre.
Abrazo Grande!
Respuesta
1
Te cuento que no existe alguna función predefinida de fox para lo que intentas lograr. Pero en los casos en los que yo quiero obtener donde se encuentra el .EXE que se está ejecutando, o el .FXP uso las funciones SYS(16) o SYS(2004). Con esas funciones fox te muestra la ruta donde están los programas o ejecutables principales de manera que si le descartas las subcarpetas puedes obtener el nombre del servidor en la ruta. EJ:
* agregando este codigo al programa principal, compilando y estando en ejecución.
?SYS(16)
* te va a devolver algo así \\SERVER\C\SISTEMA\PRG\INICIO.FXP
?SYS(2004)
* te va a devolver algo así \\SERVER\C\SISTEMA\SISTEMA.EXE
Ok javi muchas gracias, entiendo lo que me estas diciendo. Conseguí este código que creo que puede llegar hacer lo que quiero pero no se como manejarlo, te lo Muestro a ver que te parece.:
*| --------------------------------------------------------
*| Searcher of the address IP and address of Internet using Winsock.
*| Mexican production for the international community.
*| Programmer of systems. Lic. Ramón Rodríguez Martínez.
*|
*| --------------------------------------------------------
*| struct HOSTENT {
*| char FAR * h_name; 0:4
*| char FAR * FAR * h_aliases; 4:4
*| short h_addrtype; 8:2
*| short h_length; 10:2
*| char FAR * FAR * h_addr_list; 12:4
*| }; total = 16 bytes
#DEFINE HOSTENT_SIZE 16
*-- Clear Windows screen
Clear
DO decl
Activate Screen
IF Not InitWinsock()
RETURN
ENDIF
LOCAL lcSourceHost, lnHostAddr, lcHOSTENT, lnNamePtr, lnAddrlistPtr
*lcSourceHost = "localhost"
*lcSourceHost = "aol.com"
*lcSourceHost = "microsoft.com"
*lcSourceHost = "google.com"
* Honestly, I have no idea who are these guys below
* they just exist and all of`em sound great as for the Friday night
*
*lcSourceHost = "takeiteasy.com"
*lcSourceHost = "nevermind.com"
*lcSourceHost = "cheerup.com"
*lcSourceHost = "drink2me.com"
*lcSourceHost = "169.254.184.105"
lcSourceHost = "servidorcesa"
* retrieving an address for the HOSTENT structure
lnHostAddr = gethostbyname(lcSourceHost)
IF lnHostAddr <> 0
* retrieving and displaying the HOSTENT data
* copying data from the structure to a VFP string
lcHOSTENT = GetMemBuf (lnHostAddr, HOSTENT_SIZE)
* a pointer to the host name
lnNamePtr = buf2dword(SUBSTR(lcHOSTENT, 1,4))
? "Host name:", GetMemStr(lnNamePtr)
* a pointer to a null-terminated list of addresses
lnAddrlistPtr = buf2dword(SUBSTR(lcHOSTENT, 13,4))
* displaying IP addresses for this host
= DisplayIPs (lnAddrlistPtr)
ENDIF
* terminating use of the Ws2_32.dll
= WSACleanup()
* End of Main
PROCEDURE DisplayIPs (lnAddrlistPtr)
* retrieving IP addresses from the list
LOCAL lnElementPtr, lnIPcount, lcDataAddress, lnDataAddress,;
lcIPAddrBuf
lnIPcount = 0 && list elements retrieved
lnElementPtr = lnAddrlistPtr && first member on the list
* scanning the list one member by another
* until a null member found
DO WHILE .T.
* the list member contains a DWORD address of its data
lcDataAddress = GetMemBuf (lnElementPtr, 4)
lnDataAddress = buf2dword(lcDataAddress)
* the result -- lnDataAddress -- is an address
* to DWORD IP address for this host
IF lnDataAddress = 0
* the last member on this list is null
EXIT
ENDIF
* retrieving a DWORD with an IP address
lcIPAddrBuf = GetMemBuf (lnDataAddress, 4)
lnIPcount = lnIPcount + 1
? "IP " + LTRIM(STR(lnIPcount)) + ":",;
GetIPAddress(lcIPAddrBuf)
* shifting to the next element on the list
lnElementPtr = lnElementPtr + 4 && DWORD
ENDDO
RETURN
FUNCTION InitWinsock()
* Initializing the Winsock service for the application
#DEFINE WSADATA_SIZE 398
#DEFINE WS_VERSION 514 && 0x0202
LOCAL lcWSADATAln, lnInitResult
lcWSADATA = Repli(Chr(0), WSADATA_SIZE)
lnInitResult = WSAStartup (WS_VERSION, @lcWSADATA)
RETURN (lnInitResult = 0)
FUNCTION GetMemStr (lnAddr)
* returning data from a memory block as a VFP string
#DEFINE MEMSTR_BUFSIZE 255
LOCAL lcBuffer
lcBuffer = SPACE(MEMSTR_BUFSIZE)
= Heap2Str (@lcBuffer, lnAddr, MEMSTR_BUFSIZE)
RETURN SUBSTR(lcBuffer, 1, AT(Chr(0),lcBuffer)-1)
FUNCTION GetMemBuf (lnAddr, lnBufsize)
LOCAL lcBuffer
lcBuffer = Repli(Chr(0), lnBufsize)
= Heap2Str (@lcBuffer, lnAddr, lnBufsize)
RETURN lcBuffer
FUNCTION GetIPAddress (lcAddrBuf)
* converting 4-characters string buffer
* to string representation of the IP address
LOCAL lcResult, ii
lcResult = ""
FOR ii=1 TO 4
lc
Espero que me Puedas Ayudar.
Un Abrazo!
Por lo que llego a interpretar de ese código que me mandaste es para obtener la dirección web de un host en donde puede haber una base de datos o un programa. Pero no creo que te sirva para lo que intentás lograr, ¿vos apuntas a una dirección de red local cierto? Es mucho más sencillo que una conexión Web.
Claro Javi, te cuento... estoy desarrollando un Visor para un Sistema de Gestión muy conocido. La Función de este visor es solamente encontrar la Instancia SQL server instalada y Abrir sus bases para poder realizar consultas, el Único inconveniente es que por lo General en Sistema se encuentra en un servidor instalado y este, por lo general esta dentro de un Dominio o de un grupo de Trabajo.
Osea, yo Instalo el Visor y luego creo el ODBC. Por eso si se Ubiece podido hacer que por Medio de Código obtener el Nombre de Servidor de DOminio me Ubiece servido Mucho pero Tampoco es algo de lo más Importante.
Por otro lado, ¿qué Soft me recomendás para crear un Instalador?
Estoy Usando el Inno Setup 5 pero me Parece medio Complicado en algunos ASpectos.
Entiendo, para hacer un instalador te recomiendo InstallShield Express 5.0 for Visual FoxPro. Es muy práctico y rápido.
Respecto a como encontrar la instancia SQL se puede llegar a probar inspeccionando entre los registros de SQL server y analizar las rutas de las Bases de datos que haya conectadas. Pero nunca hice algo así y no sabría como aconsejarte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas