1

Network Service次のコードのように実行されているサービスのコンピューター プリンシパル名を取得しようとしました。

BOOLEAN bError = GetUserNameEx(NameUserPrincipal, buffer, &buf_len);

私のコンピュータのドメイン名は であるため、 の結果も同じService-Windows@example.comであると期待しています。bufferただし、返されるサービス プリンシパル名はWIN-SC4RKQUKM4D@example.com. コンピューターを変更してドメインに追加したことは確かですexample.com

異常なプリンシパル名についてはわかりません。何が問題なのですか?どんなヒントでも大歓迎です。

アップデート


ドメイン コントローラーでサービスを実行していますが、これが結果に影響するかどうかはわかりません。

ありがとう、そしてよろしく!

4

1 に答える 1

1

Network Service ユーザー アカウントのユーザー名を検索するときに、コンピューター名を取得できるとは思いません。LookupAccountSid で調べると、次のようになると思いますNT AUTHORITy\NETWORK SERVICE

#include <windows.h>
#include <iostream>

int main(){
    SID nss;
    DWORD size = sizeof(nss);

    CreateWellKnownSid(WinNetworkServiceSid, NULL, &nss, &size);

    char name[256];
    DWORD n_size = sizeof(name);
    char domain[256];
    DWORD d_size = sizeof(domain);
    SID_NAME_USE type;

    LookupAccountSid(NULL, &nss, name, &n_size, domain, &d_size, &type);

    std::cout << domain << "\\" << name << "\n";
    return 0;
}

[そしてそれが私が得たものです]。

表示されているユーザー名は、自動的に作成されたユーザー アカウントの名残だと思います。名前を別のものに変更した後も、元の名前の名残が残っているようです。私も時々それらを見てきましたが、それらがいつ表示されるか、または表示されないかを予測するのに十分な信頼できるパターンを見たことはありません(また、それらが完全になくなったことを確認する方法を見つけたこともありません).

于 2013-07-17T06:40:53.297 に答える