我有一个非常奇怪的问题和一个关于可能解决方案的问题。我需要从用 C++ 编写的程序(使用本机 WinAPI)在 Windows 计算机上获取完全限定的专有名称。为此,我使用以下 API:
TCHAR buff[256];
DWORD dwSz = 256;
GetUserNameEx(NameFullyQualifiedDN, buff, &dwSz);
如果我从用户模式进程(从用户桌面)运行上面的代码,它在任何时候都无法工作。但是当我从系统服务调用该 API 时,它不会在 3-4 秒内返回!(我应该说上面的代码可能会在不是 Active Directory 域成员的系统上调用。)
所以我的第一个问题是,为什么从服务调用它会是一个问题?
第二个问题,如果我在我的服务启动时调用该 API,然后将结果缓存在一个全局变量中,然后再使用它,那么该系统上的专有名称发生变化的可能性有多大?