如何在Windows 7中获取域名

4

我曾经写过一个运行 Excel 插件的 DLL(数年前)。

这段代码可以在 Windows XP 中正确检索域名,但在 Windows 7 中失败了。
只有以管理员身份运行代码才能正常工作。
然而,我不想以管理员身份运行,因为这段代码是 Excel 插件 DLL 的一部分,如果以管理员身份运行,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');

在正常权限下,如何使用Delphi在Windows 7中检索域名?
1个回答

7

使用Win32 API中的NetWkstaGetInfo,通过level值=100请求信息。

返回有关工作站环境的信息,包括特定于平台的信息、域名和本地计算机的名称以及有关操作系统的信息。bufptr参数指向WKSTA_INFO_100结构。


谢谢,我已经查看了。我需要成为一个认证用户才能访问,所以我想普通用户有权限运行这个。有点讨厌不得不使用这些可怕的Win_api函数,希望有一个Delphi包装函数可以代替它们。 - Johan
是的,Win32可以做到一切,但可能会很丑陋。 - Steve Townsend
@Johan:有很多Delphi的NetWkstaGetInfo示例:http://www.google.com/search?q=NetWkstaGetInfo+delphi,例如这个http://www.delphi-central.com/tutorials/delphi_user_list.aspx。 - Jeroen Wiert Pluimers
1
@Jeroen,是的,我找到了这个:http://www.delphi-central.com/tutorials/delphi_user_list.aspx 嘿!那就是你找到的一样的,无论如何,这很好,因为它在开发机器上运行。让我们看看它是否能在生产中工作。 - Johan
@Johan - 很高兴听到这个消息,祝你一切顺利。 - Steve Townsend

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接