Ir para conteúdo
Fórum Script Brasil
  • 0

Netapi32.dll


Guest - Andreia -

Pergunta

Guest - Andreia -

Boa tarde

Gostaria de saber se algum já usou ou sabe de a dll netapi32.dll funciona no windows 98 e 95, eu fiz no XP e funcionou direitinho..mas no 98 não...

se algum puder me ajudar agradeço muito

Obrigada

Andreia

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

A dll netapi32.dll infelizmente não vai funcionar no Windows 9x pois é específica para plataformas NT .NET

No windows 9x é usado a dll svrapi.dll no lugar da netapi32.dll.

Só que com várias diferenças...

O que você pode fazer é o seguinte...

O mais importante de tudo é não linkar nenhuma função que chama a dll netapi32.dll direto na aplicação ou seja, linkar as funções que você está usando em tempo de execução...

Para isto você vai precisar detectar o Sistema operacional que está rodando, exemplo, se a plataforma é Windows NT (NT, 2000, XP, 2003) ou 9x (95, 98, ME)..

Ai é só chamar a função em tempo de execução ao invés de linkar direto na aplicação

exemplo...

Se o sistema for Windows 9x você carrega a dll 'svrapi.dll' e se for Windows NT ai você carrega a dll 'netapi32.dll'

isso em tempo de execução, se você linkar alguma função dessas dll direto na aplicação, vai dar runtime error na hora que você abrir o programa, que é o que eu acho q está acontecendo não é? tipo..

The nomedoprograma file is linked to missing export NETAPI32.DLL bla bla bla

Se for algum componente que estiver linkando estas funções você terá que ter o source para poder modificar...

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Andreia -

Eu estou usando essa dll em uma funcao que busca a Hora do Servidor, e é bem, esse erro que você falou que esta acontecendo...

NET_API_STATUS = DWORD;

function NetRemoteTOD(UncServerName: LPCWSTR; BufferPtr: PBYTE): NET_API_STATUS; stdcall;

external 'netapi32.dll' Name 'NetRemoteTOD';

function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall;

external 'netapi32.dll' Name 'NetApiBufferFree';

dwRetValue := NetRemoteTOD(@ServerName, PBYTE(@TimeOfDayInfo));

NetApiBufferFree(TimeOfDayInfo);

Muito Obrigada...vou tentar fazer 2 funções...

Obrigada pela atenção...você me ajudou Muito

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Andreia -

não querendo abusar Churc, mas sera que não daria para fazer uma outra dessa funcao adpatando para essa outra DLL que você comentou ?

function GetInfo(ComputadorRemoto: string): TStrings;

const

NERR_Success = 0;

var

TimeOfDayInfo: PTimeOfDayInfo;

ServerName: array[0..255] of WideChar;

dwRetValue, dwDays, dwSecs: DWORD;

GMTTime: TSystemTime;

CurTime, UpTime: TDateTime;

ts: TTimeStamp;

stString: TStrings;

begin

StringToWideChar(trim(ComputadorRemoto), @ServerName, SizeOf(ServerName));

dwRetValue := NetRemoteTOD(@ServerName, PBYTE(@TimeOfDayInfo));

if dwRetValue <> NERR_Success then

raise Exception.Create(SysErrorMessage(dwRetValue));

with TimeOfDayInfo^ do

begin

FillChar(GMTTime, SizeOf(GMTTime), 0);

with GMTTime do

begin

wYear := tod_year;

wMonth := tod_month;

wDayOfWeek := tod_weekday;

wDay := tod_day;

wHour := tod_hours;

wMinute := tod_mins;

wSecond := tod_secs;

wMilliseconds := tod_hunds;

end;

CurTime := SystemTimeToDateTime(GMTTime);

if tod_timezone <> -1 then

CurTime := CurTime + ((1 / 24 / 60) * -tod_timezone);

dwDays := 0;

dwSecs := tod_msecs div 1000;

if dwSecs >= SecsPerDay then

begin

dwDays := dwSecs div SecsPerDay;

dwSecs := dwSecs mod SecsPerDay;

end;

ts.Time := dwSecs * 1000;

ts.Date := DateDelta;

UpTime := TimeStampToDateTime(ts);

stString := TStringList.Create;

with stString do

begin

Add(StringOfChar(' ', 40) + '*** ' + ComputadorRemoto + ' ***');

Add(Format(SUpTime, [dwDays, FormatDateTime('h', UpTime),

FormatDateTime('n', UpTime),

FormatDateTime('s', UpTime)]));

Add(Format(SCurrentDate, [FormatDateTime(ShortDateFormat, CurTime)]));

Add(Format(SCurrentTime, [FormatDateTime(LongTimeFormat, CurTime)]));

data_maq:=strtodatetime(FormatDateTime(ShortDateFormat, CurTime));

hora:=strtodatetime(FormatDateTime(LongTimeFormat, CurTime));

EndUpdate;

end;

end;

NetApiBufferFree(TimeOfDayInfo);

Result := stString;

end;

Muito Obrigada

Link para o comentário
Compartilhar em outros sites

  • 0

olá andréia

olha infelizmente esta função que você está usando NetRemoteTOD não é suportada na dll 'svrapi.dll'

Esta função é valida somente na dll 'netapi32.dll', que foi implementada a partir do Windows NT.

As funções que são suportadas pela 'svrapi.dll' são

NetAccessAdd NetAccessCheck NetAccessDel NetAccessEnum NetAccessGetInfo NetAccessGetUserPerms NetAccessSetInfo NetConnectionEnum NetFileClose2 NetFileEnum NetSecurityGetInfo NetServerGetInfo NetServerSetInfo NetSessionDel NetSessionEnum NetSessionGetInfo NetShareAdd NetShareDel NetShareEnum NetShareGetInfo NetShareSetInfo

Bom, vou dar uma pesquisada e ver se tem algo parecido para versões Win9x mas acho pouco provável, pois foi somente a partir do Windows NT que foi criado o conceito "Server" e essa função é para rede.

qualquer coisa eu posto aqui...

abraços

ops acho q da sim pelo NetServerGetInfo qualquer coisa eu posto aqui

abraços

Editado por Churc
Link para o comentário
Compartilhar em outros sites

  • 0

ola andreia

olha pelo que vi não há como mesmo.

A dll 'svrapi.dll' que é a antecessora da 'netapi32.dll' não tem nenhuma função que pegue estes tipos de informações do servidor, a NetGetServerInfo apenas pega informações como versão do Sistema e tal não pega data/hora.

fazer o que não é?, paciência... o que você pode fazer agora, é usar isso somente quando a plataforma winnt+

se isso servir e precisar de ajuda...

abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...