Вниз
Скачать: CL | DM;

Имя компьютера   Найти похожие ветки 

 
Жук ©   (2003-03-19 10:39) [0]

Приведённая процедура иногда не вытаскивает имя компьютера. Почему ?
procedure TFPrinc.Whod;
var
Registry: TRegistry;
s:String;
begin
s:="";
Registry:=TRegistry.Create;
try
Registry.RootKey:=HKEY_LOCAL_MACHINE;
Registry.OpenKey
("\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName",False);
s:=Registry.ReadString("ComputerName");
finally
Registry.CloseKey;
Registry.Free;
end;
end;


 
Jel ©   (2003-03-19 10:50) [1]

А с какими правами пробуешь запускать? Если не админ - не пустят.
В коде ошибок вроде нет.


 
Слесарь Матерящийся ©   (2003-03-19 10:58) [2]

А чем плох GetComputerName() (Win32 API)?


 
Жук ©   (2003-03-19 11:03) [3]

2 Jel
Не админ. Спасибо.

2 Слесарь Матерящийся
Ща перепишу с предложенной вами процедурой. Спасибо. :-)


 
Жук ©   (2003-03-19 14:02) [4]

Заработало в таком виде :
procedure TFPrinc.Whod;
var
s:String;
Buffer:array [0..MAX_COMPUTERNAME_LENGTH+1] of Char;
nSize:DWORD;
begin
s:="";
nSize:=SizeOF(Buffer);
GetComputerName(@Buffer, nSize);
s:=StrPas(@Buffer);
end;

Только не понятно, почему ошибку не выдавало в первом варианте, когда прав не хватало на Registry.OpenKey...


 
theodor_iv ©   (2003-03-19 21:53) [5]

Перед Registry.OpenKey нужно дописать строку
Registry.Access := KEY_READ;
тогда будет работать и без прав админа.

Хотя GetComputerName в данном случае правильнее.


 
max2057 ©   (2003-03-26 15:10) [6]

Удалено модератором
Примечание: Задай СВОЙ вопрос в отдельной ветке



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.042 c
3-83387
Kirill_S
2003-05-06 10:32
2003.05.26
Заполнить программно ComboBox


3-83322
Stas
2003-05-07 09:22
2003.05.26
SQL и IP


14-83677
Карелин Артем
2003-04-30 12:09
2003.05.26
Yaffil, Работа с офисом 97 через OLE, Win 95 и слабый комп.


1-83525
Лана Розанова
2003-05-13 09:00
2003.05.26
Service


3-83417
Babay
2003-04-28 04:53
2003.05.26
Ошибка при удалении в ADOQuery.




   Наверх