Вверх ↑
Разработчик
Ответов: 26304
Рейтинг: 2146
#1: 2011-06-23 18:01:52 ЛС | профиль | цитата
Netspirit писал(а):
Соответственно, найдешь способ отличить Win2000 от других - делай как и хотел

Я ему сказал как -- через определения мажора и минора версий, должно быть 5 и 0
------------ Дoбавленo в 18.01:
goluzov, на тебе OpenKey с анализом на Win2000



function THIRegistry.OpenKey;
const
KEY_WOW64_64KEY = $0100;
var
TempKey: HKey;
S: string;
Disposition: Integer;
Relative: Boolean;
ovi: TOSVersionInfo;
begin
FillChar(ovi, SizeOf(TOSVersionInfo), #0);
ovi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(ovi);
if not ((ovi.dwMajorVersion = 5) and (ovi.dwMinorVersion = 0)) then
Access := Access or KEY_WOW64_64KEY;
S := Key;
Relative := IsRelative(S);

if not Relative then Delete(S, 1, 1);
TempKey := 0;
if not CanCreate or (S = '') then begin
Result := RegOpenKeyEx(GetBaseKey(Relative), PChar(S), 0,
Access, TempKey) = ERROR_SUCCESS;
end else
Result := RegCreateKeyEx(GetBaseKey(Relative), PChar(S), 0, nil,
REG_OPTION_NON_VOLATILE, Access, nil, TempKey, @Disposition) = ERROR_SUCCESS;
if Result then begin
if (CurrentKey <> 0) and Relative then S := FCurrentPath + '\' + S;
ChangeKey(TempKey, S);
end;
end;
карма: 22

0