4

通常、次のように呼び出して、Active Directory ネットワーク上のメンバー コンピューターの識別名を取得します。

TCHAR buff[256];
buff[0] = 0;
DWORD dwSz = SIZEOF(buff);
GetComputerObjectName(NameFullyQualifiedDN, buff, &dwSz);

ただし、この問題は、そのメンバー コンピューターが現在 DC に接続されていない場合に発生します。たとえば、職場のラップトップを家に持ち帰ると、職場のローカル AD にアクセスできず、GetComputerObjectName失敗します。(エラー コード 1355 または であると思います ERROR_NO_SUCH_DOMAIN。)

私の質問は、そのような状況でメンバー コンピューターの識別名を取得する方法はありますか?

4

3 に答える 3

1

私が言っても構わないのであれば、あなたがやろうとしていることはやや欠陥があると思います.

FQDN は、メンバー マシンがドメインに接続されている場合にのみ有効です。マシンにオフラインでログオンしている場合 (あなたの説明からそうであると思います)、そのマシンはもはやドメインに FQDN があるとは考えられません。

結局のところ、あなたがオフラインになっている間に、巧妙なシステム管理者がマシンのアカウントを AD に移動し、次にそこからドメインにログインしたときに FQDN が変更される可能性があります。

あなたが引用したレジストリキーは確かにFQDNを提供しますが、マシンがオフラインの間、最後に記録された値のキャッシュと考えるべきです.

私があなたなら、GetComputerObjectName() によってスローされた例外を処理し、代わりにgethostname()のようなものを使用します。

乾杯、イアン。

于 2013-01-16T07:45:18.023 に答える
0

うーん。だから誰もわからないよね?

私の唯一のワイルドな推測は、GPO のこのレジストリ キーからそれを取得することです。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Distinguished-Name

それで、あなたはどう思いますか?

于 2013-01-15T23:39:23.620 に答える
0

ComputerNameDnsFullyQualified NameType を使用した GetComputerNameEx は、DC との通信への依存度が低いのではないでしょうか?

于 2013-01-16T14:48:05.300 に答える