Принципиальный молчун
Зарегистрирован: 08 October 2003
Сообщения: 7
Примеры кода: 0
|
WMI + MS DNS + Локальная машина права юзера. |
08 October 2003 20:49 |
|
|
|
|
Доброго времени суток.
Такая проблема. Необходимо править записи зон DNS сервера из кода на ASP.NET
Дано:
Windows'2000 Server. Stand Alone (т.е. домена нет) На нем крутится IIS и DNS.
NET Fraimwork 1.1
Пытаюсь управлять DNS'ом через WMI.
Код:
Imports System.Management
Function CreateA() As String
Dim CO = New ConnectionOptions
Dim s As New ManagementScope("\\localhost\root\MicrosoftDNS", CO)
Dim p As New ManagementPath("MicrosoftDNS_AType")
Dim o As New ObjectGetOptions
Dim c As New ManagementClass(s, p, o)
Dim inParams As ManagementBaseObject = c.GetMethodParameters("CreateInstanceFromPropertyData")
inParams("DnsServerName") = "localhost"
inParams("ContainerName") = "test.ru"
inParams("OwnerName") = "sss.test.ru"
inParams("IPAddress") = "1.2.3.5"
Dim outParams As ManagementBaseObject = c.InvokeMethod("CreateInstanceFromPropertyData", inParams, Nothing)
End Function
Нормально выполняется с правами админа, (в Web.config добавлено
<identity impersonate="true" userName="<localmachine_name>\administrator"
password="password"/> )
но естественно при выполнении от ASPNET получает Access Denied.
Код
Imports System.Management
Function CreateA() As String
Dim CO = New ConnectionOptions
CO.Userneme = "Admin"
CO.Password = "Admin_Password"
Dim s As New ManagementScope("\\localhost\root\MicrosoftDNS", CO)
Dim p As New ManagementPath("MicrosoftDNS_AType")
Dim o As New ObjectGetOptions
Dim c As New ManagementClass(s, p, o)
Dim inParams As ManagementBaseObject = c.GetMethodParameters("CreateInstanceFromPropertyData")
inParams("DnsServerName") = "localhost"
inParams("ContainerName") = "test.ru"
inParams("OwnerName") = "sss.test.ru"
inParams("IPAddress") = "1.2.3.5"
Dim outParams As ManagementBaseObject = c.InvokeMethod("CreateInstanceFromPropertyData", inParams, Nothing)
End Function
Вылетает с ошибкой "System.Management.ManagementException: User
credentials cannot be used for local connections" На строке
Dim inParams As ManagementBaseObject = c.GetMethodParameters("CreateInstanceFromPropertyData")
Соответственно нормально работает, если DNS находится на другом сервере. Т.е. ConnectionOptions.Username и ConnectionOptions.Password работают только в случае обращения по сети.
Теперь собственно вопрос:
Как умудрится управлять DNS'ом не захватывая права админа, или захватывая их на крайне короткое время?
Приветствуются любые идеи.
С уважением,
Илья Князев
|
|