none
NetServerEnumでドメイン指定できない RRS feed

  • 全般的な情報交換

  • C# VS2008 で開発しています。
    PCがActive Directoryのドメインに参加しており、ドメインに参加していないワークグループもエクスプローラで表示されている環境で、
    2つのドメインに所属するPC名をすべて取得したいと思っています。
    ドメイン名はエクスプローラでMicrosoft Windows Networkを見た時
    MYDOMAIN
    WORKGROUP
    となっているものとします。

    このとき、NetServerEnum() 関数で、MYDOMAIN(自身のプライマリドメイン)は取得できるのですが、WORKGROUPが取得できません。
    ソースは次のように記述しております。


    IntPtr buf;
    uint entries;
    uint totalentries;
    uint resume = 0;
    NetApi32.NetServerEnum (null, 100, out buf, 4294967295, out entries, out totalentries, 0xFFFFFFFF, "WORKGROUP", ref resume);


    8番目の引数をnullにすると自身のドメインが取得できますが、"MYDOMAIN"では駄目なようでした。
    ドメイン名に問題があるのかとも思いましたが、同じくNetServerEnum関数を使って「ドメインのみ取得」すると、上記2つのドメイン名は取得できました。
    書き方の問題だとは思うのですが、どこが間違っているかご示唆頂けないでしょうか?
    宜しくお願いします。
    • 種類を変更済み 高橋 春樹 2010年1月25日 5:51 自己解決したようなので、スレッドの種類を変更させて頂きました。
    2010年1月19日 11:39

すべての返信

  • 自己解決致しました。

    string domain = "WORKGROUP";
    byte[] dmbytes = Encoding.Unicode.GetBytes(domain);

    stringはUnicodeのものだと思っていたのですが、Unicodeのbyte配列? を渡さないといけないようです。
    この辺りは知識があやふやなもので、色々試して動いたらラッキー、といった実装ですが。。。(今回も^^;)

    ともあれ解決です。どうも有難う御座いました。
    2010年1月20日 3:41