DOS ERROR 161 que hacer en windows de 64 bits?

Post Reply
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

DOS ERROR 161 que hacer en windows de 64 bits?

Post by karinha »

Un simples COPY TO newname.dbf, retorna DOS ERROR 161. Solo en windows de 64 bits, Imagen:

Como elimino este \\newname.dbf por ejemplo?

Los archivos estan en, P:\

Image

Gracias, Saludos.
João Santos - São Paulo - Brasil
User avatar
Antonio Linares
Site Admin
Posts: 37485
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by Antonio Linares »

Joao,

https://docs.microsoft.com/en-us/window ... es--0-499-
ERROR_BAD_PATHNAME

161 (0xA1)

The specified path is invalid.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by karinha »

Master Antonio:

Code: Select all

   PUBLIC cDirPleno

   cDirPleno := GETCURDIR()

   IF SUBS( cDirPleno, LEN( ALLTRIM(cDirPleno ) ) , 1 ) = "\"
      cDirPleno := SUBS( cDirPleno, 1 , LEN( ALLTRIM(cDirPleno ) ) - 1 )
   ENDIF

   LCHDIR( cDirPleno )
   SET DEFAULT TO

No funciona en windows de 64 bits en windows 7 32 bits, normal. Retorna: \\

Debria retornar del servidor, P:\NOMBRE.DBF

??
João Santos - São Paulo - Brasil
User avatar
Antonio Linares
Site Admin
Posts: 37485
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by Antonio Linares »

Joao,

No hay diferencias en el código fuente de esa función para 32 ó 64 bits:

Code: Select all

HB_FUNC( GETCURDIR )
{
   DWORD dwLen = GetCurrentDirectory( 0, NULL );
   
   if( dwLen )
   {
      char * pBuffer = ( char * ) hb_xgrab( dwLen );
      
      GetCurrentDirectory( dwLen, pBuffer );
      
      hb_retc( pBuffer );
      hb_xfree( pBuffer );
   }
   else
      hb_retc( "" );
}
 
Por lo que debería funcionar sin problemas... No puede venir el error por otro sitio ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by karinha »

Maestro el problema ocurre cuando el cliente instala el programa en C: \ del servidor de archivos.
Si se instala en una carpeta, todo funciona perfecto.
João Santos - São Paulo - Brasil
User avatar
Antonio Linares
Site Admin
Posts: 37485
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by Antonio Linares »

Prueba a hacer:

MsgInfo( GetCurDir() )

En 32 y 64 bits
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by karinha »

En windows 7 32 bits, retorna: C:\

no tengo windows de 64 bits ó windows server 2008 ahora. Después hago testes.

Gracias saludos.
João Santos - São Paulo - Brasil
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by cmsoft »

Hola Jao, probaste ejecutar el .exe como Administrador? (Boton derecho, ejecutar como administrador). Tal vez sea un tema de permisos.. En Windows 10 me pasa mucho eso en entornos de red.
Saludos
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: DOS ERROR 161 que hacer en windows de 64 bits?

Post by karinha »

Como ADM funciona.

Code: Select all

#include "FiveWin.ch"

static oWnd

//----------------------------------------------------------------//

FUNCTION Main()

   local oBar

   DEFINE WINDOW oWnd TITLE "COPY TO C:\"

   DEFINE BUTTONBAR oBar _3D OF oWnd

   DEFINE BUTTON OF oBar ACTION( ACTUALIZAR_BD() )

   SET MESSAGE OF oWnd TO "COPY TO C:\" NOINSET CLOCK DATE KEYBOARD

   ACTIVATE WINDOW oWnd

RETURN NIL

FUNCTION ACTUALIZAR_BD()  // COMO ADM. FUNCIONA.

   LOCAL cDest := "C:\COPIA.DBF"

   USE CUSTOMER EXCLUSIVE NEW

   COPY TO (cDest)

   IF FILE( "C:\COPIA.DBF" )
      ? "EXITO"
   ELSE
      ? "NO FUNCIONA SOLO COMO ADM."
   ENDIF

   USE

RETURN NIL
Saludos.
João Santos - São Paulo - Brasil
Post Reply