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

(Resolvido) Verificar Execução do Software


DelpheroMn

Pergunta

Olá Amigos.

Estou desenvolvendo um software em delphi, e existe algumas falhas quando ele é executado em modo de compatibilidade com windows 98

Eu queria saber se tem como eu detectar se ele foi executado em modo de comatibilidade.

Assim eu daria uma menssagem de erro e não deixaria o programa executar.

Procurei bastante na internet mas não achei nada sobre o assunto..

alguém poderia me auxiliar?

Agradeço desde Já.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá Jhonas Muito obrigado pela atenção.

Mas assim amigo.

Esse seu code é bom , mas ele executa o sistema por compatibilidade que escolher.

Se eu escolher uma compatibilidade X por exemplo a windows 2000

Meu sistema não irá falhar, porém em alguns computadores como windows 7 poderá não executar.

é que existem bastante variedades de computadores que usam meu sistema.

Intão eu tenho que deixa-lo acessivel a todos entende?

O ideal seria detectar se executou como windows 98 Ou Fazer ele desativar executar em modo de compatibilidade do meu programa.

não sei se isso é possivel , mas vou ver oque posso Fazer.

Pelo que vi , ele usa registro , acho que é possivel desativar o "Executar em modo de compatibilidade"

Obrigado desde já

Link para o comentário
Compartilhar em outros sites

  • 0
O ideal seria detectar se executou como windows 98

O código abaixo detecta qual é o sistema operacional do micro

procedure TForm1.Button1Click(Sender: TObject);
var
  Temp, Platform , Version : String;
  osInfo : TOSVersionInfo;
begin

  osInfo.dwOSVersionInfoSize:=SizeOf(osInfo);
  GetVersionEx(osInfo);
  Version :=IntToStr(osInfo.dwMinorVersion);
  Temp:=IntToStr(osInfo.dwBuildNumber and $0ffff);
  Temp:=String(osInfo.szCSDVersion);
  if (Length(Temp) > 0) then
    if (Temp[1] <> ' ') then
      Temp:=' ' + Temp;
  Version:= Version + Temp;

  label2.caption := Version;

  case osInfo.dwPlatformId of
    VER_PLATFORM_WIN32s :
      Platform:='Win32s';
    VER_PLATFORM_WIN32_WINDOWS : begin
      if (osInfo.dwMinorVersion = 0) then
        Platform:='Windows 95'
      else if (osInfo.dwMinorVersion = 10) then
        Platform:='Windows 98'
      else
        Platform:='Windows Me';
    end;
    VER_PLATFORM_WIN32_NT :
      case osInfo.dwMajorVersion of
        3 : Platform:='Windows NT 3';
        4 : Platform:='Windows NT 4.0';
        5 : case osInfo.dwMinorVersion of
              0: Platform:='Windows 2000, Windows Vista ou Windows Server 2008';
              1: Platform:='Windows XP';
              2: Platform:='Windows Server 2003 R2, 2003 ou XP Professional X64 Edition';
            else
              Platform:='Windows Version +';
            end;
      end;
  end;


  label1.caption := Platform;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Se voce utilizar essa Unit, terá informações mais completas sobre as versões instaladas nos micros

unit
GetWinVersionInfo;

type
_OSVERSIONINFOEX = record
dwOSVersionInfoSize : DWORD;
dwMajorVersion : DWORD;
dwMinorVersion : DWORD;
dwBuildNumber : DWORD;
dwPlatformId : DWORD;
szCSDVersion : array[0..127] of AnsiChar;
wServicePackMajor : WORD;
wServicePackMinor : WORD;
wSuiteMask : WORD;
wProductType : BYTE;
wReserved : BYTE;
end;
TOSVERSIONINFOEX = _OSVERSIONINFOEX;

function GetVersionExA(var lpVersionInformation: TOSVersionInfoEX): BOOL;
stdcall; external kernel32;

const 
VER_NT_WORKSTATION :Integer = 1;
VER_SUITE_ENTERPRISE :Integer = 2; 
VER_NT_SERVER :Integer = 3; 
VER_SUITE_DATACENTER :Integer = 128;
VER_SUITE_PERSONAL :Integer = 512;

const 
PRODUCT_BUSINESS = $00000006; {Business Edition} 
PRODUCT_BUSINESS_N = $00000010; {Business Edition}
PRODUCT_CLUSTER_SERVER = $00000012; {Cluster Server Edition} 
PRODUCT_DATACENTER_SERVER = $00000008; {Server Datacenter Edition
(full installation)} 
PRODUCT_DATACENTER_SERVER_CORE = $0000000C; {Server Datacenter Edition
(core installation)} 
PRODUCT_ENTERPRISE = $00000004; {Enterprise Edition} 
PRODUCT_ENTERPRISE_N = $0000001B; {Enterprise Edition} 
PRODUCT_ENTERPRISE_SERVER = $0000000A; {Server Enterprise Edition
(full installation)}
PRODUCT_ENTERPRISE_SERVER_CORE = $0000000E; {Server Enterprise Edition 
(core installation)} 
PRODUCT_ENTERPRISE_SERVER_IA64 = $0000000F; {Server Enterprise Edition 
for Itanium-based Systems}
PRODUCT_HOME_BASIC = $00000002; {Home Basic Edition} 
PRODUCT_HOME_BASIC_N = $00000005; {Home Basic Edition} 
PRODUCT_HOME_PREMIUM = $00000003; {Home Premium Edition}
PRODUCT_HOME_PREMIUM_N = $0000001A; {Home Premium Edition} 
PRODUCT_HOME_SERVER = $00000013; {Home Server Edition} 
PRODUCT_SERVER_FOR_SMALLBUSINESS = $00000018; {Server for Small Business
Edition} 
PRODUCT_SMALLBUSINESS_SERVER = $00000009; {Small Business Server} 
PRODUCT_SMALLBUSINESS_SERVER_PREMIUM = $00000019; {Small Business Server 
Premium Edition}
PRODUCT_STANDARD_SERVER = $00000007; {Server Standard Edition 
(full installation)}
PRODUCT_STANDARD_SERVER_CORE = $0000000D; {Server Standard Edition 
(core installation)} 
PRODUCT_STARTER = $0000000B; {Starter Edition} 
PRODUCT_STORAGE_ENTERPRISE_SERVER = $00000017; {Storage Server Enterprise 
Edition}
PRODUCT_STORAGE_EXPRESS_SERVER = $00000014; {Storage Server Express
Edition} 
PRODUCT_STORAGE_STANDARD_SERVER = $00000015; {Storage Server Standard 
Edition} 
PRODUCT_STORAGE_WORKGROUP_SERVER = $00000016; {Storage Server Workgroup 
Edition} 
PRODUCT_UNDEFINED = $00000000; {An unknown product}
PRODUCT_ULTIMATE = $00000001; {Ultimate Edition} 
PRODUCT_ULTIMATE_N = $0000001C; {Ultimate Edition} 
PRODUCT_WEB_SERVER = $00000011; {Web Server Edition} 
PRODUCT_UNLICENSED = $ABCDABCD; {Unlicensed product} 

var
{$EXTERNALSYM GetProductInfo}
GetProductInfo: function (dwOSMajorVersion, dwOSMinorVersion, 
dwSpMajorVersion, dwSpMinorVersion: DWORD;
var pdwReturnedProductType: DWORD): BOOL stdcall = NIL; 

function GetOSInfo: string;
var
NTBres, BRes: Boolean;
OSVI: TOSVERSIONINFO;
OSVI_NT: TOSVERSIONINFOEX;
tmpStr: string;
dwOSMajorVersion, dwOSMinorVersion,
dwSpMajorVersion, dwSpMinorVersion,
pdwReturnedProductType : DWORD;
begin
Result := 'Error';
NTBRes := FALSE;
try
OSVI_NT.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFOEX);
NTBRes := GetVersionExA(OSVI_NT); 
OSVI.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
BRes := GetVersionEx(OSVI);
except
OSVI.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); 
BRes := GetVersionEx(OSVI);
end; 
if (not BRes) and (not NTBres) then
Exit; 
Move( OSVI, OSVI_NT, SizeOf(TOSVersionInfo) );

case OSVI_NT.dwPlatformId of 
VER_PLATFORM_WIN32_NT: 
begin
if OSVI_NT.dwMajorVersion <= 4 then 
Result := 'Windows NT '; 
if (OSVI_NT.dwMajorVersion = 5) and (OSVI_NT.dwMinorVersion = 0) then
Result := 'Windows 2000 '; 
if (OSVI_NT.dwMajorVersion = 5) and (OSVI_NT.dwMinorVersion = 1) then 
Result := 'Windows XP ';
if (OSVI_NT.dwMajorVersion = 6) and (OSVI_NT.dwMinorVersion = 0) then 
begin 
Result := 'Windows Vista ';
if Assigned(GetProductInfo) then
begin 
GetProductInfo( dwOSMajorVersion, dwOSMinorVersion,
dwSpMajorVersion, dwSpMinorVersion, 
pdwReturnedProductType ); 
case pdwReturnedProductType of
PRODUCT_BUSINESS: 
tmpStr := 'Business Edition';
PRODUCT_BUSINESS_N:
tmpStr := 'Business Edition'; 
PRODUCT_CLUSTER_SERVER: 
tmpStr := 'Cluster Server Edition';
PRODUCT_DATACENTER_SERVER: 
tmpStr := 'Server Datacenter Edition (full installation)'; 
PRODUCT_DATACENTER_SERVER_CORE:
tmpStr := 'Server Datacenter Edition (core installation)'; 
PRODUCT_ENTERPRISE: 
tmpStr := 'Enterprise Edition';
PRODUCT_ENTERPRISE_N: 
tmpStr := 'Enterprise Edition'; 
PRODUCT_ENTERPRISE_SERVER:
tmpStr := 'Server Enterprise Edition (full installation)';
PRODUCT_ENTERPRISE_SERVER_CORE:
tmpStr := 'Server Enterprise Edition (core installation)'; 
PRODUCT_ENTERPRISE_SERVER_IA64:
tmpStr := 'Server Enterprise Edition for Itanium-based Systems'; 
PRODUCT_HOME_BASIC:
tmpStr := 'Home Basic Edition'; 
PRODUCT_HOME_BASIC_N:
tmpStr := 'Home Basic Edition'; 
PRODUCT_HOME_PREMIUM:
tmpStr := 'Home Premium Edition'; 
PRODUCT_HOME_PREMIUM_N:
tmpStr := 'Home Premium Edition'; 
PRODUCT_HOME_SERVER:
tmpStr := 'Home Server Edition';
PRODUCT_SERVER_FOR_SMALLBUSINESS:
tmpStr := 'Server for Small Business Edition'; 
PRODUCT_SMALLBUSINESS_SERVER:
tmpStr := 'Small Business Server'; 
PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
tmpStr := 'Small Business Server Premium Edition'; 
PRODUCT_STANDARD_SERVER:
tmpStr := 'Server Standard Edition (full installation)'; 
PRODUCT_STANDARD_SERVER_CORE:
tmpStr := 'Server Standard Edition (core installation)'; 
PRODUCT_STARTER:
tmpStr := 'Starter Edition'; 
PRODUCT_STORAGE_ENTERPRISE_SERVER:
tmpStr := 'Storage Server Enterprise Edition';
PRODUCT_STORAGE_EXPRESS_SERVER:
tmpStr := 'Storage Server Express Edition';
PRODUCT_STORAGE_STANDARD_SERVER:
tmpStr := 'Storage Server Standard Edition';
PRODUCT_STORAGE_WORKGROUP_SERVER: 
tmpStr := 'Storage Server Workgroup Edition';
PRODUCT_UNDEFINED:
tmpStr := 'An unknown product';
PRODUCT_ULTIMATE: 
tmpStr := 'Ultimate Edition';
PRODUCT_ULTIMATE_N: 
tmpStr := 'Ultimate Edition';
PRODUCT_WEB_SERVER: 
tmpStr := 'Web Server Edition';
PRODUCT_UNLICENSED: 
tmpStr := 'Unlicensed product'
else 
tmpStr := '';
end;{ pdwReturnedProductType } 
Result := Result + tmpStr;
NTBRes := FALSE;
end;{ GetProductInfo<>NIL }
end;{ Vista } 
if NTBres then
begin 
if OSVI_NT.wProductType = VER_NT_WORKSTATION then
begin 
if OSVI_NT.wProductType = VER_NT_WORKSTATION then
begin 
case OSVI_NT.wSuiteMask of
512: Result := Result + 'Personal'; 
768: Result := Result + 'Home Premium';
else 
Result := Result + 'Professional';
end;
end
else if OSVI_NT.wProductType = VER_NT_SERVER then 
begin
if OSVI_NT.wSuiteMask = VER_SUITE_DATACENTER then 
Result := Result + 'DataCenter Server'
else if OSVI_NT.wSuiteMask = VER_SUITE_ENTERPRISE then 
Result := Result + 'Advanced Server'
else 
Result := Result + 'Server';
end; 
end{ wProductType=VER_NT_WORKSTATION }
else 
begin
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE; 
if OpenKeyReadOnly('SYSTEM\CurrentControlSet\Control\ProductOptions') then
try 
tmpStr := UpperCase(ReadString('ProductType'));
if tmpStr = 'WINNT' then 
Result := Result + 'Workstation';
if tmpStr = 'SERVERNT' then 
Result := Result + 'Server';
finally 
CloseKey;
end; 
finally
Free; 
end;
end;{ wProductType<>VER_NT_WORKSTATION } 
end;{ NTBRes }
end;{ VER_PLATFORM_WIN32_NT } 
VER_PLATFORM_WIN32_WINDOWS:
begin 
if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 0) then
begin
Result := 'Windows 95 ';
if OSVI.szCSDVersion[1] = 'C' then
Result := Result + 'OSR2';
end; 
if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 10) then
begin 
Result := 'Windows 98 ';
if OSVI.szCSDVersion[1] = 'A' then 
Result := Result + 'SE';
end; 
if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 90) then
Result := 'Windows Me'; 
end;{ VER_PLATFORM_WIN32_WINDOWS } 
VER_PLATFORM_WIN32s:
Result := 'Microsoft Win32s';
else 
Result := 'Unknown';
end;{ OSVI_NT.dwPlatformId } 
end;{ GetOSInfo } 

initialization
@GetProductInfo := GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 
'GetProductInfo');

end.

abraço

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...