понедельник, 11 июля 2011 г.

Решение проблемы использование windows 7 учетных данных для vpn(pptp, pppoe) для сетевых дисков.

Итак проблема!
В некоторых случаях при работе в домене, если используется vpn подключение windows начинает использовать данные подключения для попыток аутентификации в домене, в том числе сетевых дисков, что приводит к их неработоспособности.
Способ для исправления очень прост.
В файлах с раcширением pbk.
Находящихся здесь
C:\Users\All Users\Microsoft\Network\Connections\Pbk\
И здесь.
AppData\Roaming\Microsoft\Network\Connections\Pbk
Поменять UseRasCredentials=1 на UseRasCredentials=0

Ну и в догонку скрипт для автоматизации


strComputer = "."
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
'AppData\Roaming\Microsoft\Network\Connections\Pbk
Set WshShell = WScript.CreateObject("Wscript.Shell")
Set oWMI = GetObject("winmgmts://" & strComputer & "\root\cimv2")
vAppData=WshShell.ExpandEnvironmentStrings("%APPDATA%")


Function GetCurrentUser()
Dim uUsername
Set colComputerSystem = oWMI.execquery("Select username from Win32_ComputerSystem")
For Each objitem In colComputerSystem
If Not IsNull(objitem.username) Then
uUsername = objitem.username
End If
Next
GetCurrentUser=Right(uUsername,Len(uUsername)-InStr(uUsername,"\"))
End Function




'spawning test constants
Sub replacepbk(pathtofile,allusers)
Const alluserspath = "C:\Users\All Users\Microsoft\Network\Connections\Pbk\"
Const stringforfind = "UseRasCredentials=1"
Const stringforreplace = "UseRasCredentials=0"
'Const pathtofile = "\Microsoft\Network\Connections\Pbk\"
Const extension = ".pbk"
'open folder and search for target extension
If ( allusers = 1 ) Then
Set oFolder = oFSO.GetFolder(alluserspath)
Else
Set oFolder = oFSO.GetFolder(vAppData & pathtofile)
End If
For Each objfile In oFolder.Files
If (InStr(objfile.name, extension) = 0 ) Then
Else 
'open file and search for target expression
MsgBox(oFolder & "\" & objfile.name)
Set foredit = oFSO.GetFile(oFolder & "\" & objfile.name)
strideting = foredit.OpenAsTextStream(1).ReadAll
If ( allusers = 1 ) Then
foredit.OpenAsTextStream(2).WriteLine(stringforreplace)
foredit.OpenAsTextStream.Close
Exit Sub
End if
'vars for loop
b=0
z=1
step1 = Len(stringforfind)
Do While i<>1 
tochka = InStr(z, strideting, stringforfind)
If ( tochka = 0 ) Then
i=1
Else
b = b + 1
z = tochka + step1
End If
Loop


i=0
Do While i<>b
strideting = Replace(strideting, stringforfind, stringforreplace)
i = i + 1
Loop
foredit.OpenAsTextStream.Close
foredit.OpenAsTextStream(2).Write(strideting)
foredit.OpenAsTextStream.Close


End If
Next
End Sub


replacepbk "\Microsoft\Network\Connections\Pbk\", 0
replacepbk "",1
MsgBox("Job is done (c) reZon 2011")

Комментариев нет: