Как использовать System.DirectoryServices для доступа к веб-серверу в другом домене - PullRequest
0 голосов
/ 20 сентября 2011

Я пытаюсь написать простую программу для вывода списка виртуальных каталогов сервера IIS, который находится в другом домене, чем мой локальный компьютер.При создании корневого объекта DirectoryEntry я попытался передать учетные данные с помощью квалификатора домена, например:

DirectoryEntry entry = new DirectoryEntry("IIS://myremoteserver/W3SVC/1/Root", "mydomain\\myusername", "mypassword");

Однако я получаю исключение «Доступ запрещен».Это правильный способ сделать это?Все примеры кода, которые я нашел, имеют доступ только к локальному веб-серверу.Я запускаю WinXP SP3 локально и пытаюсь подключиться к Win2003 R2 (64-разрядному) серверу под управлением IIS версии 6.0.

1 Ответ

0 голосов
/ 23 сентября 2011

Я решил использовать вместо этого классы System.Management , что работает, когда я использую квалификатор домена при входе в систему:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;

namespace MyProgram
{
    class Program
    {

        static void Main(string[] args)
        {
            ConnectionOptions options = new ConnectionOptions();
            options.Authentication = AuthenticationLevel.PacketPrivacy;
            options.Username = "somedomain\\username";
            options.Password = "password";
            ManagementPath path = new ManagementPath();
            path.Server = "someserver";
            path.NamespacePath = "root/MicrosoftIISv2";
            ManagementScope scope = new ManagementScope(path, options);

            string Query = "select * from IIsWebVirtualDirSetting";
            using (ManagementObjectSearcher search = new ManagementObjectSearcher(scope, new ObjectQuery(Query)))
            {
                ManagementObjectCollection results = search.Get();
                foreach (ManagementObject obj in results)
                {
                    Console.WriteLine(obj.Properties["Name"].Value);
                }                
            }          
            Console.ReadLine();
        }
    }
}
...