非常に奇妙な問題があり、可能な解決策について質問があります。C++ で記述されたプログラム (ネイティブ WinAPI を使用) から、Windows コンピューターで完全修飾識別名を取得する必要があります。そのために、次の API を使用します。
TCHAR buff[256];
DWORD dwSz = 256;
GetUserNameEx(NameFullyQualifiedDN, buff, &dwSz);
上記のコードは、ユーザー モード プロセス (ユーザー デスクトップ) から実行するとまったく機能しません。しかし、システム サービスからその API を呼び出すと、3 ~ 4 秒間返されません。(上記のコードは、Active Directory ドメインのメンバーではないシステムで呼び出される可能性があります。)
だから私の最初の質問は、なぜサービスからそれを呼び出すことが問題になるのでしょうか?
2 番目の質問は、サービスの開始時にその API を呼び出し、後でその結果をグローバル変数にキャッシュし、後で代わりに使用した場合、そのシステムで識別名が変更される可能性はどのくらいですか?