Clipper On Line • Ver Tópico - Função WIN_OSNETREGOK()

Função WIN_OSNETREGOK()

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

Função WIN_OSNETREGOK()

Mensagempor Kapiaba » 03 Jun 2014 16:36

Função WIN_OSNETREGOK()

Senhores boa tarde, porfa, alguém tem esta função completa para FiveWin for xHarbour, e em qualquer versão do windows e que possa disponibiliar?

Link:

viewtopic.php?f=4&t=11325

Obg. abs. :xau
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Função WIN_OSNETREGOK()

Mensagempor toya » 04 Jun 2014 22:21

Apenas ajustei para resolver a questão da OS_ISUSERANADMIN()

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

//Ajustado para xHarbour. Por favor tirem suas conclusões.

#include "common.ch"
#include "directry.ch"

#define WIN_HKEY_LOCAL_MACHINE 0
#define WIN_HKEY_CLASSES_ROOT 1
#define WIN_HKEY_CURRENT_USER 2
#define WIN_HKEY_CURRENT_CONFIG 3
#define WIN_HKEY_LOCAL_MACHINE 4
#define WIN_HKEY_USERS 5

/* NOTE: To change any of these registry settings
         Administrator rights are required by default in Windows. [vszakats] */

FUNCTION WIN_OSNETREGOK( lSetIt, lDoVista )
   LOCAL bRetVal := .T.
   LOCAL cKeySrv
   LOCAL cKeyWks

   IF ! ISLOGICAL( lSetIt )
      lSetIt := .F.
   ENDIF
   IF ! ISLOGICAL( lDoVista )
      lDoVista := .T.
   ENDIF

   IF ! lDoVista .AND. Os_IsWinVISTA() //win_osIsVistaOrUpper()
      /* do nothing */
   ELSEIF Os_IsWin9X() // hb_osIsWin9x()
      bRetVal := QueryRegistry( WIN_HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\VxD\VREDIR", "DiscardCacheOnOpen", 1, lSetIt )
   ELSE
      cKeySrv := "System\CurrentControlSet\Services\LanmanServer\Parameters"
      cKeyWks := "System\CurrentControlSet\Services\LanmanWorkStation\Parameters"

      IF lSetIt
         lSetIt := ! Os_IsWinNT() .OR. os_IsUserAnAdmin() //wapi_IsUserAnAdmin() // #toya: 04/06/2014 - 20:59:01 - #Release 001.zzz
      ENDIF

      /* Server settings */
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "CachedOpenLimit", 0, lSetIt )
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "EnableOpLocks", 0, lSetIt ) /* Q124916 */
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "EnableOpLockForceClose", 1, lSetIt )
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SharingViolationDelay", 0, lSetIt )
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SharingViolationRetries", 0, lSetIt )

      IF Os_IsWinVISTA() // win_osIsVistaOrUpper()
         /* If SMB2 is enabled turning off oplocks does not work, so SMB2 is required to be turned off on Server. */
         bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeySrv, "SMB2", 0, lSetIt )
      ENDIF

      /* Workstation settings */
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UseOpportunisticLocking", 0, lSetIt )
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "EnableOpLocks", 0, lSetIt )
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "EnableOpLockForceClose", 1, lSetIt )
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UtilizeNtCaching", 0, lSetIt )
      bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "UseLockReadUnlock", 0, lSetIt )

      IF Os_IsWinVISTA() //win_osIsVistaOrUpper()
         bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "FileInfoCacheLifetime", 0, lSetIt )
         bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "FileNotFoundCacheLifetime", 0, lSetIt )
         bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, cKeyWks, "DirectoryCacheLifetime", 0, lSetIt )
      ENDIF

      IF Os_IsWinNT() //hb_osIsWin2K()
         bRetVal := bRetVal .AND. QueryRegistry( WIN_HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\MRXSmb\Parameters", "OpLocksDisabled", 1, lSetIt )
      ENDIF
   ENDIF

   RETURN bRetVal

FUNCTION WIN_OSNETVREDIROK( /* @ */ nResult )
   LOCAL aFiles

   nResult := 0

   IF Os_IsWin9X() // hb_osIsWin9x()
      aFiles := Directory( GetEnv( "WINDIR", "C:\WINDOWS" ) + "\SYSTEM\VREDIR.VXD" )  /* Check for faulty files. */
      IF ! Empty( aFiles )
         IF aFiles[ 1 ][ F_SIZE ] == 156749 .AND. aFiles[ 1 ][ F_TIME ] == "11:11:10"
            nResult := 1111
         ELSEIF aFiles[ 1 ][ F_SIZE ] == 140343 .AND. aFiles[ 1 ][ F_TIME ] == "09:50:00"
            nResult := 950
         ENDIF
      ENDIF
   ENDIF

   RETURN Empty( nResult )

//------------------------------------------------------------------------------
// #toya: 04/06/2014 - 21:17:26 - #Release 001.zzz

#pragma BEGINDUMP

#include <windows.h>
#include "hbapiitm.h"

HB_FUNC( OS_ISUSERANADMIN )
{
  BOOL iResult = FALSE ;
  typedef int (WINAPI *USERADMIN)( void );
  HINSTANCE hLib;
  USERADMIN ProcAdd;
  hLib = LoadLibrary("shell32.dll");
  if (hLib != NULL)
  {
    ProcAdd = ( USERADMIN ) GetProcAddress(hLib, "IsUserAnAdmin");
    if (NULL != ProcAdd)
    {
      iResult = (ProcAdd)() ;
    }
    FreeLibrary( hLib );
  }
  hb_retl( iResult ) ;
}

#pragma ENDDUMP

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

Elcio Carlos
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044

FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
toya
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 147
Data de registro: 26 Jul 2004 16:51
Cidade/Estado: Campo Grande/MS - Brasil
Curtiu: 4 vezes
Mens.Curtidas: 11 vezes




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 17 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro