Как получить доменное имя в Windows 7 - PullRequest
4 голосов
/ 20 июня 2011

Я написал DLL, которая запускает надстройку Excel (несколько лет назад).

Я использую этот код для получения доменного имени, и он отлично работает в Windows XP, но не работает в Windows 7.
Только , если я работаю от имени администратора, это работает.
Однако я не хочу работать от имени администратора, потому что этот код является частью DLL-библиотеки надстройки Excel, и Excel не может найти файлы пользователя, если работает от имени администратора.

MyReg:= TRegistry.Create;

MyReg.RootKey:= HKEY_LOCAL_MACHINE;
MyReg.OpenKey(RegKeyWin7,false);
NetworkID2:= lowercase(trim(MyReg.ReadString(RegValWin7)));
MyReg.CloseKey;

FreeAndNil(MyReg);

FNetworkOK:= (NetworkID2 = OKRes4);
//Temp check to pinpoint the problem.
if FNetWorkOK = false then ShowMessage('Error wrong domain: '+NetworkID2)
else ShowMessage('all ok');

Как получить доменное имя в Windows 7, используя Delphi с обычными привилегиями?

1 Ответ

7 голосов
/ 20 июня 2011

Используйте NetWkstaGetInfo в Win32 API, запрашивая информацию через level значение = 100.

Возвращает информацию о среде рабочей станции, включая информацию о платформе, имядомена и локального компьютера, а также информацию, касающуюся операционной системы.Параметр bufptr указывает на структуру WKSTA_INFO_100.

...