Войти

Показать полную графическую версию : [решено] Отключение пользователя из группы админов на удаленной машине


andDaviD
22-10-2011, 15:05
I need do something like this code

strUser = "myUser"
strComputer = "myremoteComuter"
strPassword = "myPassword_"

Set objUser = GetObject("WinNT://" & strComputer & "/" & strUser & ",user",strUser,strPassword)


If Err.Number = 0 Then
objUser.AccountDisabled = true
objUser.SetInfo
End If

But there is not such methods GetObject that takes 3 parameters.

Iska
22-10-2011, 15:44
andDaviD, напишите то же самое, но по-русски.

andDaviD
22-10-2011, 16:33
Мне необходимо выполнить следующий код:

strUser = "myUser"
strComputer = "myremoteComuter"
strPassword = "myPassword_"

Set objUser = GetObject("WinNT://" & strComputer & "/" & strUser & ",user",strUser,strPassword)


If Err.Number = 0 Then
objUser.AccountDisabled = true
objUser.SetInfo
End If

Но не существует метода GetObject, который принимает 3 параметра. как мне подключиться к удаленной машине и отключить аккаунт пользователя?

Iska
22-10-2011, 20:40
«GetObject()» — нет, для этого предназначен метод «OpenDSObject()». Пример смотрите здесь: How to Validate a User Exists in a Windows NT Domain - 4GuysFromRolla.com (http://www.4guysfromrolla.com/webtech/061202-1.shtml).

andDaviD
22-10-2011, 21:37
да, похоже это то, что я ищу. только у меня вылетает ошибка на строке
Set objIADSUser = objIADS.GetObject("user", strClientUsername)"Не найден сетевой путь". Хотя путь есть. Не знаете с чем связано?

Iska
22-10-2011, 23:52
andDaviD, мне сейчас сложно сказать — нет доступа ни к сети, ни к домену. Для локальной машины работает:
Option Explicit

Const ADS_SECURE_AUTHENTICATION = &H01

Dim strComputer
Dim strAdminUserName
Dim strAdminPassword
Dim strUserName

Dim objIADsNamespace
Dim objIADsComputer
Dim objIADsUser


strComputer = "MyComputer,computer"
strAdminUserName = "Администратор"
strAdminPassword = "MyPassword"
strUserName = "AdminUser"

Set objIADsNamespace = GetObject("WinNT:")
Set objIADsComputer = objIADsNamespace.OpenDSObject("WinNT://" & strComputer, strAdminUserName, strAdminPassword, ADS_SECURE_AUTHENTICATION)
Set objIADsUser = objIADsComputer.GetObject("user", strUserName)

objIADsUser.AccountDisabled = True
objIADsUser.SetInfo

Set objIADsUser = Nothing
Set objIADsComputer = Nothing
Set objIADsNamespace = Nothing

WScript.Quit 0

Или, короче:
Option Explicit

Const ADS_SECURE_AUTHENTICATION = &H01

Dim strComputer
Dim strAdminUserName
Dim strAdminPassword
Dim strUserName


strComputer = "MyComputer,computer"
strAdminUserName = "Администратор"
strAdminPassword = "MyPassword"
strUserName = "AdminUser"

With GetObject("WinNT:").OpenDSObject( _
"WinNT://" & strComputer, strAdminUserName, strAdminPassword, ADS_SECURE_AUTHENTICATION _
).GetObject("user", strUserName)

.AccountDisabled = True
.SetInfo
End With

WScript.Quit 0

andDaviD
23-10-2011, 00:03
Спасибо. Разобрался. У меня так заработало:


strNTDomain = "david"
strAdminUsername = "R"
strAdminPassword = "100200300Aa_"
strClientUsername = "Bala"
strOldPassword = "100200300Aa__"
strNewPassword = "100200300Aa_"


Set objIADSUser = GetObject("WinNT:").OpenDSObject("WinNT://david/" & strClientUsername & ",user", strAdminUsername ,strAdminPassword , ADS_SECURE_AUTHENTICATION)

objIADSUser.ChangePassword strOldPassword,strNewPassword
objIADSUser.SetInfo


Осталось это к C# прилепить.Но это уже другая история )




© OSzone.net 2001-2012