- - PR -
ASDIによるグループ名の取得について
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-03-12 12:03
こんにちは、お世話になります。
ADSIを使ってNTドメインのグループ名を取得するロジック(VB6)で Set Container = GetObject("WinNT://" & ContainerName & ",computer") Container.Filter = Array("Group") Dim Group As IADsGroup For Each Group In Container Debug.Print (Group.Name) Next とすると、グループが取得できますが、 これをVisual Studio.NET(2002)で Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Container As IADsContainer Dim ContainerName As String = "tkosq01" Dim myArray() As Object Container = GetObject("WinNT://" & ContainerName & ",computer") Container.Filter = myArray("Group") Dim Group As IADsGroup For Each Group In Container Debug.Write(Group.Name) Next End Sub と記述すると、実行時に 「文字列"Group"から型'Integer'へのキャストが有効ではありません」 となり、エラーとなります。 Container.Filterにどのようなものを渡せばいいかが わかりません。 ADSIではなくSystem.DirectoryServicesを使いなさいといわれそうですが、 手元にはADSIの情報しかありません。 よろしくお願いします。 | ||||||||||||||||
|
投稿日時: 2004-03-12 13:26
さ・おさん、こんにちは。
【VB6】
これは、VB6の Array 関数ですね。 この場合は"Group"という文字列の要素を一つだけ含む一次元の配列(を格納したVariant型)を返します。 なお、Array関数はVB.netでは廃止されており、同じように書くと System.Array クラスを意味してしまうのでコンパイラに弾かれてしまいます。 そこで、以下のように書き換えてみたんだと思いますが、「配列(n)」という書き方をする場合、n には、配列内の各要素を識別する、0 から始まるインデックス(数値)を指定します。その、数値を指定すべきところに文字列 "Group" を指定しているために「文字列"Group"から型'Integer'へのキャストが有効ではありません」という事になります。 【VB.net】
ですから、これを書き換えるとすれば、
というような書き方になると思います。
VS.netをお使いなんですよね? であれば、MSDNライブラリのクラスライブラリリファレンスに、 System.DirectoryServices に関する情報もちゃんとありますよ。 | ||||||||||||||||
|
投稿日時: 2004-03-12 14:46
きくちゃん さん ありがとうございます。
Container.Filter = New Object() {"Group"} としましたら、グループ名を取得できました。 お世話になりました。 |
1