FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Archivo poco accesible por el usuario
Posts: 257
Joined: Tue May 16, 2006 04:46 PM
Archivo poco accesible por el usuario
Posted: Tue Aug 16, 2011 05:30 PM

Como todos, busco proteger mis sistemas.

Usando una memoria USB extraiendo el No de serie "Fisico" es la mejor opcion pero el inconveniente es que la pueden perder y deben cargarla para todos lados, ademas para clientes fuera del pais hay que enviarla lo que representa un costo adicional.

En fin, no es ese el punto. Hice un esquema de proteccion usando en parte el serial de la Tarjeta de Red y por otra parte en colocar un archivo oculto en la computadora pero por ejemplo Memowrite("C:\ArchOcu.Log","Algo") no lo crea, seguramente Windows no lo permite.

Alguna idea?

RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Archivo poco accesible por el usuario
Posted: Tue Aug 16, 2011 05:56 PM

en w7, no te permitira escribir el archivo en esa ubicacion, prueba ponerlo en

?Memowrite( GetEnv( "LOCALAPPDATA" ) + "\"+"ArchOcu.Log","Algo")
?Memoread(GetEnv( "LOCALAPPDATA" ) + "\"+"ArchOcu.Log")

salu2

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 257
Joined: Tue May 16, 2006 04:46 PM
Re: Archivo poco accesible por el usuario
Posted: Tue Aug 16, 2011 07:08 PM

Excelente idea Don Carlos, pero si otro usuario en la misma computadora lo corre, el sistema no lo encontrara.
Cual seria el parametro para que usara el directorio de todos los usuarios?

'chas gracias

RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Archivo poco accesible por el usuario
Posted: Tue Aug 16, 2011 08:28 PM

GetEnv("ALLUSERPROFILE")

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 257
Joined: Tue May 16, 2006 04:46 PM
Re: Archivo poco accesible por el usuario
Posted: Tue Aug 16, 2011 08:36 PM

Gracias por responder pero SFN2LFN(GetEnv("ALLUSERPROFILE")) me regresa "en blanco". Tengo WVista y estoy buscando que al menos trabaje en XP, Vista y 7

RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Archivo poco accesible por el usuario
Posted: Wed Aug 17, 2011 12:46 PM
Code (fw): Select all Collapse
/*
#define CSIDL_LOCAL_APPDATA             0x001c      // non roaming, user\Local Settings\Application Data
#define CSIDL_INTERNET_CACHE            0x0020
#define CSIDL_COOKIES                         0x0021
#define CSIDL_HISTORY                         0x0022
#define CSIDL_COMMON_APPDATA         0x0023      // All Users\Application Data
#define CSIDL_WINDOWS                       0x0024      // GetWindowsDirectory()
#define CSIDL_SYSTEM                          0x0025      // GetSystemDirectory()
#define CSIDL_PROGRAM_FILES             0x0026      // C:\Program Files
#define CSIDL_MYPICTURES                  0x0027      // My Pictures, new for Win2K
#define CSIDL_PROGRAM_FILES_COMMON      0x002b      // C:\Program Files\Common 
#define CSIDL_COMMON_DOCUMENTS            0x002e      // All Users\Documents
#define CSIDL_RESOURCES                    0x0038      // %windir%\Resources\, For
*/
procedure main()
?GetFolderAppData()
?GetFolderMyDocuments()
?GetFolderMyPictures()
?GetFolderMyTemp()
return
/*-------------------------------------------------------------------------------------------------*/

FUNCTION GetFolderMyDocuments()
   LOCAL cFolder := ""

   cFolder := GetSpecialFolder( CSIDL_PERSONAL )

RETURN cFolder

/*-------------------------------------------------------------------------------------------------*/

FUNCTION GetFolderMyPictures()
   LOCAL cFolder := ""

   cFolder := GetSpecialFolder( CSIDL_MYPICTURES )

RETURN cFolder

/*-------------------------------------------------------------------------------------------------*/

FUNCTION GetFolderMyTemp()
   LOCAL cFolder := ""

//   cFolder := GetEnv( "TEMP" )
   cFolde  := CGetSpecialFolder( CSIDL_LOCAL_APPDATA ) + "\local\temp"

RETURN cFolder

/*-------------------------------------------------------------------------------------------------*/

FUNCTION GetSpecialFolder( nCSIDL )
   LOCAL cFolder

   cFolder := CGetSpecialFolder( nCSIDL )

RETURN cFolder

/*-------------------------------------------------------------------------------------------------*/

FUNCTION GetFolderAppData( nCSIDL )
   LOCAL cFolder

   cFolder := CGetSpecialFolder( CSIDL_COMMON_APPDATA )

RETURN cFolder

/*-------------------------------------------------------------------------------------------------*/
#pragma BEGINDUMP

#ifndef __BORLANDC__
#define WINVER 5
#endif

#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapierr.h"
#include "hbdate.h"

#include "shlobj.h"
#include "windows.h"


HB_FUNC( CGETSPECIALFOLDER )
{
   char *lpBuffer = (char*) hb_xgrab( MAX_PATH + 1 );

   LPITEMIDLIST pidlBrowse;

   SHGetSpecialFolderLocation( GetActiveWindow(), hb_parni(1) , &pidlBrowse );
   SHGetPathFromIDList( pidlBrowse, lpBuffer );

   hb_retc(  lpBuffer );
   hb_xfree( lpBuffer );
}
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: Archivo poco accesible por el usuario
Posted: Thu Aug 18, 2011 07:09 AM
Carlos,

Gracias por tu aportación. La he probado y funciona estupendamente. He reducido la fuente y la publico por si a alguien le interesara:

Code (fw): Select all Collapse
#include "fivewin.ch"
#define CSIDL_LOCAL_APPDATA       0x001c    //  user\Local Settings\Application Data
#define CSIDL_PERSONAL                 0x0005      // user\MyDocument
#define CSIDL_INTERNET_CACHE      0x0020
#define CSIDL_COOKIES                   0x0021
#define CSIDL_HISTORY                   0x0022
#define CSIDL_COMMON_APPDATA   0x0023      // All Users\Application Data
#define CSIDL_WINDOWS                 0x0024      // GetWindowsDirectory()
#define CSIDL_SYSTEM                    0x0025      // GetSystemDirectory()
#define CSIDL_PROGRAM_FILES       0x0026      // C:\Program Files
#define CSIDL_MYPICTURES             0x0027      // My Pictures, new for Win2K
#define CSIDL_PROGRAM_FILES_COMMON   0x002b  // C:\Program Files\Common
#define CSIDL_COMMON_DOCUMENTS  0x002e      // All Users\Documents
#define CSIDL_RESOURCES               0x0038      // %windir%\Resources\, For

FUNCTION fWindows()
?cGetSpecialFolder( CSIDL_LOCAL_APPDATA ) + "\local\temp"
?cGetSpecialFolder( CSIDL_PERSONAL )
?cGetSpecialFolder( CSIDL_INTERNET_CACHE)
?cGetSpecialFolder( CSIDL_COOKIES)
?cGetSpecialFolder( CSIDL_HISTORY)
?cGetSpecialFolder( CSIDL_COMMON_APPDATA )
?cGetSpecialFolder( CSIDL_WINDOWS)
?cGetSpecialFolder( CSIDL_SYSTEM)
?cGetSpecialFolder( CSIDL_PROGRAM_FILES)
?cGetSpecialFolder( CSIDL_MYPICTURES )
?cGetSpecialFolder( CSIDL_PROGRAM_FILES_COMMON)
?cGetSpecialFolder( CSIDL_COMMON_DOCUMENTS)
?cGetSpecialFolder( CSIDL_RESOURCES)

return nil


/*-------------------------------------------------------------------------------------------------*/
#pragma BEGINDUMP

#ifndef __BORLANDC__
#define WINVER 5
#endif

#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapierr.h"
#include "hbdate.h"

#include "shlobj.h"
#include "windows.h"


HB_FUNC( CGETSPECIALFOLDER )
{
   char *lpBuffer = (char*) hb_xgrab( MAX_PATH + 1 );

   LPITEMIDLIST pidlBrowse;

   SHGetSpecialFolderLocation( GetActiveWindow(), hb_parni(1) , &pidlBrowse );
   SHGetPathFromIDList( pidlBrowse, lpBuffer );

   hb_retc(  lpBuffer );
   hb_xfree( lpBuffer );
}
Un saludo



Manuel
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Archivo poco accesible por el usuario
Posted: Thu Aug 18, 2011 02:45 PM

aclaro que no fui yo el creador, no recuerdo quien es (lo siento), pero igualmente agradesco a ese colaborador por compartir el codigo.

salu2

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)

Continue the discussion