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!
1 respuesta
Respuesta
1
1
Anónimo
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.