Добрый день, коллеги.
Пишу Bat файл для добавления в файл %USERPROFILE%\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk нового VPN подключения.
Обнаружил интересную особенность, если текст записывается из bat файла, то файл rasphone.pbk перестает работать, следовательно я не вижу VPN\Dialup соединений в панели управления.
Если текст скопировать из самого rasphone.pbk и продублировать в файле, то соединение создается.
В чем же секрет данного файла и текста в нем.
Ниже приведены примеры текстов, если их скопировать в файл rasphone.pbk, то один из них будет работать, а другой нет.
Пример неработающего текста -
Код:
[MS_VPN1]
Encoding=1
PBVersion=2
Type=2
AutoLogon=0
UseRasCredentials=1
LowDateTime=2016871744
HighDateTime=30333636
DialParamsUID=1031494
Guid=11567330C4F89945B38B2CA0BDAF4E9F
VpnStrategy=1
ExcludedProtocols=8
LcpExtensions=1
DataEncryption=256
SwCompression=0
NegotiateMultilinkAlways=0
SkipDoubleDialDialog=0
DialMode=0
OverridePref=15
RedialAttempts=3
RedialSeconds=60
IdleDisconnectSeconds=0
RedialOnLinkFailure=1
CallbackMode=0
CustomDialDll=
CustomDialFunc=
CustomRasDialDll=
ForceSecureCompartment=0
DisableIKENameEkuCheck=0
AuthenticateServer=0
ShareMsFilePrint=1
BindMsNetClient=1
SharedPhoneNumbers=0
GlobalDeviceSettings=0
PrerequisiteEntry=
PrerequisitePbk=
PreferredPort=VPN3-0
PreferredDevice=Мини-порт глобальной сети (PPTP)
PreferredBps=0
PreferredHwFlow=1
PreferredProtocol=1
PreferredCompression=1
PreferredSpeaker=1
PreferredMdmProtocol=0
PreviewUserPw=1
PreviewDomain=1
PreviewPhoneNumber=0
ShowDialingProgress=1
ShowMonitorIconInTaskBar=1
CustomAuthKey=0
AuthRestrictions=512
IpPrioritizeRemote=0
IpInterfaceMetric=0
IpHeaderCompression=0
IpAddress=0.0.0.0
IpDnsAddress=0.0.0.0
IpDns2Address=0.0.0.0
IpWinsAddress=0.0.0.0
IpWins2Address=0.0.0.0
IpAssign=1
IpNameAssign=1
IpDnsFlags=0
IpNBTFlags=1
TcpWindowSize=0
UseFlags=2
IpSecFlags=0
IpDnsSuffix=microsoft.ru
Ipv6Assign=1
Ipv6Address=::
Ipv6PrefixLength=0
Ipv6PrioritizeRemote=1
Ipv6InterfaceMetric=0
Ipv6NameAssign=1
Ipv6DnsAddress=::
Ipv6Dns2Address=::
Ipv6Prefix=0000000000000000
Ipv6InterfaceId=0000000000000000
DisableClassBasedDefaultRoute=0
DisableMobility=0
NetworkOutageTime=0
ProvisionType=0
PreSharedKey=
CacheCredentials=1
NETCOMPONENTS=
ms_msclient=1
ms_server=1
MEDIA=rastapi
Port=VPN3-0
Device=Мини-порт глобальной сети (PPTP)
DEVICE=vpn
PhoneNumber=a2.microsoft.ru
AreaCode=
CountryCode=0
CountryID=0
UseDialingRules=0
Comment=
FriendlyName=
LastSelectedPhone=0
PromoteAlternates=0
TryNextAlternateOnFail=1
Тот же текст, только работающий -
Код:
[MS_VPN1]
Encoding=1
PBVersion=2
Type=2
AutoLogon=0
UseRasCredentials=1
LowDateTime=2016871744
HighDateTime=30333636
DialParamsUID=1031494
Guid=11567330C4F89945B38B2CA0BDAF4E9F
VpnStrategy=1
ExcludedProtocols=8
LcpExtensions=1
DataEncryption=256
SwCompression=0
NegotiateMultilinkAlways=0
SkipDoubleDialDialog=0
DialMode=0
OverridePref=15
RedialAttempts=3
RedialSeconds=60
IdleDisconnectSeconds=0
RedialOnLinkFailure=1
CallbackMode=0
CustomDialDll=
CustomDialFunc=
CustomRasDialDll=
ForceSecureCompartment=0
DisableIKENameEkuCheck=0
AuthenticateServer=0
ShareMsFilePrint=1
BindMsNetClient=1
SharedPhoneNumbers=0
GlobalDeviceSettings=0
PrerequisiteEntry=
PrerequisitePbk=
PreferredPort=VPN3-0
PreferredDevice=Мини-порт глобальной сети (PPTP)
PreferredBps=0
PreferredHwFlow=1
PreferredProtocol=1
PreferredCompression=1
PreferredSpeaker=1
PreferredMdmProtocol=0
PreviewUserPw=1
PreviewDomain=1
PreviewPhoneNumber=0
ShowDialingProgress=1
ShowMonitorIconInTaskBar=1
CustomAuthKey=0
AuthRestrictions=512
IpPrioritizeRemote=0
IpInterfaceMetric=0
IpHeaderCompression=0
IpAddress=0.0.0.0
IpDnsAddress=0.0.0.0
IpDns2Address=0.0.0.0
IpWinsAddress=0.0.0.0
IpWins2Address=0.0.0.0
IpAssign=1
IpNameAssign=1
IpDnsFlags=0
IpNBTFlags=1
TcpWindowSize=0
UseFlags=2
IpSecFlags=0
IpDnsSuffix=microsoft.ru
Ipv6Assign=1
Ipv6Address=::
Ipv6PrefixLength=0
Ipv6PrioritizeRemote=1
Ipv6InterfaceMetric=0
Ipv6NameAssign=1
Ipv6DnsAddress=::
Ipv6Dns2Address=::
Ipv6Prefix=0000000000000000
Ipv6InterfaceId=0000000000000000
DisableClassBasedDefaultRoute=0
DisableMobility=0
NetworkOutageTime=0
ProvisionType=0
PreSharedKey=
CacheCredentials=1
NETCOMPONENTS=
ms_msclient=1
ms_server=1
MEDIA=rastapi
Port=VPN3-0
Device=Мини-порт глобальной сети (PPTP)
DEVICE=vpn
PhoneNumber=a2.microsoft.ru
AreaCode=
CountryCode=0
CountryID=0
UseDialingRules=0
Comment=
FriendlyName=
LastSelectedPhone=0
PromoteAlternates=0
TryNextAlternateOnFail=1
Пример bat файла
Код:
@echo off & color 0a
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo create vpn
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
rem Присовение переменных.
set FULLPATHFILE=%USERPROFILE%\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk
set NAMEFILE=rasphone.pbk
set PATHFILE=%USERPROFILE%\AppData\Roaming\Microsoft\Network\Connections\Pbk\
set DefaultNameVPN=MS_VPN
::::::::::::::::::::::::::Create vpn::::::::::::::::::::::::::::::
rem Проверка существования файла.
if not exist %FULLPATHFILE% (
echo FAIL: The configuration file is missing, the script is complete.
pause
exit /b 1
)
rem Проверка пустой ли файл.
rem call :filesize %FULLPATHFILE%
rem echo file size is %size%
rem if %size% == 0 (
rem echo 2> %temp%\vpn.pbk
rem ) else (
rem echo. > %temp%\vpn.pbk
rem )
echo 2> %temp%\vpn.txt
call :GetName
echo [%NameVPN%] >> %temp%\vpn.txt
echo Encoding=1 >> %temp%\vpn.txt
echo PBVersion=2 >> %temp%\vpn.txt
echo Type=2 >> %temp%\vpn.txt
echo AutoLogon=0 >> %temp%\vpn.txt
echo UseRasCredentials=1 >> %temp%\vpn.txt
echo LowDateTime=2016871744 >> %temp%\vpn.txt
echo HighDateTime=30333636 >> %temp%\vpn.txt
echo DialParamsUID=1031494 >> %temp%\vpn.txt
echo Guid=1567330C4F89945B38B2CA0BDAF4E9F >> %temp%\vpn.txt
echo VpnStrategy=1 >> %temp%\vpn.txt
echo ExcludedProtocols=8 >> %temp%\vpn.txt
echo LcpExtensions=1 >> %temp%\vpn.txt
echo DataEncryption=256 >> %temp%\vpn.txt
echo SwCompression=0 >> %temp%\vpn.txt
echo NegotiateMultilinkAlways=0 >> %temp%\vpn.txt
echo SkipDoubleDialDialog=0 >> %temp%\vpn.txt
echo DialMode=0 >> %temp%\vpn.txt
echo OverridePref=15 >> %temp%\vpn.txt
echo RedialAttempts=3 >> %temp%\vpn.txt
echo RedialSeconds=60 >> %temp%\vpn.txt
echo IdleDisconnectSeconds=0 >> %temp%\vpn.txt
echo RedialOnLinkFailure=1 >> %temp%\vpn.txt
echo CallbackMode=0 >> %temp%\vpn.txt
echo CustomDialDll= >> %temp%\vpn.txt
echo CustomDialFunc= >> %temp%\vpn.txt
echo CustomRasDialDll= >> %temp%\vpn.txt
echo ForceSecureCompartment=0 >> %temp%\vpn.txt
echo DisableIKENameEkuCheck=0 >> %temp%\vpn.txt
echo AuthenticateServer=0 >> %temp%\vpn.txt
echo ShareMsFilePrint=1 >> %temp%\vpn.txt
echo BindMsNetClient=1 >> %temp%\vpn.txt
echo SharedPhoneNumbers=0 >> %temp%\vpn.txt
echo GlobalDeviceSettings=0 >> %temp%\vpn.txt
echo PrerequisiteEntry= >> %temp%\vpn.txt
echo Prerequisitetxt= >> %temp%\vpn.txt
echo PreferredPort=VPN3-0 >> %temp%\vpn.txt
echo PreferredDevice=Мини-порт глобальной сети (PPTP) >> %temp%\vpn.txt
echo PreferredBps=0 >> %temp%\vpn.txt
echo PreferredHwFlow=1 >> %temp%\vpn.txt
echo PreferredProtocol=1 >> %temp%\vpn.txt
echo PreferredCompression=1 >> %temp%\vpn.txt
echo PreferredSpeaker=1 >> %temp%\vpn.txt
echo PreferredMdmProtocol=0 >> %temp%\vpn.txt
echo PreviewUserPw=1 >> %temp%\vpn.txt
echo PreviewDomain=1 >> %temp%\vpn.txt
echo PreviewPhoneNumber=0 >> %temp%\vpn.txt
echo ShowDialingProgress=1 >> %temp%\vpn.txt
echo ShowMonitorIconInTaskBar=1 >> %temp%\vpn.txt
echo CustomAuthKey=0 >> %temp%\vpn.txt
echo AuthRestrictions=512 >> %temp%\vpn.txt
echo IpPrioritizeRemote=0 >> %temp%\vpn.txt
echo IpInterfaceMetric=0 >> %temp%\vpn.txt
echo IpHeaderCompression=0 >> %temp%\vpn.txt
echo IpAddress=0.0.0.0 >> %temp%\vpn.txt
echo IpDnsAddress=0.0.0.0 >> %temp%\vpn.txt
echo IpDns2Address=0.0.0.0 >> %temp%\vpn.txt
echo IpWinsAddress=0.0.0.0 >> %temp%\vpn.txt
echo IpWins2Address=0.0.0.0 >> %temp%\vpn.txt
echo IpAssign=1 >> %temp%\vpn.txt
echo IpNameAssign=1 >> %temp%\vpn.txt
echo IpDnsFlags=0 >> %temp%\vpn.txt
echo IpNBTFlags=1 >> %temp%\vpn.txt
echo TcpWindowSize=0 >> %temp%\vpn.txt
echo UseFlags=2 >> %temp%\vpn.txt
echo IpSecFlags=0 >> %temp%\vpn.txt
echo IpDnsSuffix=ms.ru >> %temp%\vpn.txt
echo Ipv6Assign=1 >> %temp%\vpn.txt
echo Ipv6Address=:: >> %temp%\vpn.txt
echo Ipv6PrefixLength=0 >> %temp%\vpn.txt
echo Ipv6PrioritizeRemote=1 >> %temp%\vpn.txt
echo Ipv6InterfaceMetric=0 >> %temp%\vpn.txt
echo Ipv6NameAssign=1 >> %temp%\vpn.txt
echo Ipv6DnsAddress=:: >> %temp%\vpn.txt
echo Ipv6Dns2Address=:: >> %temp%\vpn.txt
echo Ipv6Prefix=0000000000000000 >> %temp%\vpn.txt
echo Ipv6InterfaceId=0000000000000000 >> %temp%\vpn.txt
echo DisableClassBasedDefaultRoute=0 >> %temp%\vpn.txt
echo DisableMobility=0 >> %temp%\vpn.txt
echo NetworkOutageTime=0 >> %temp%\vpn.txt
echo ProvisionType=0 >> %temp%\vpn.txt
echo PreSharedKey= >> %temp%\vpn.txt
echo CacheCredentials=1 >> %temp%\vpn.txt
echo. >> %temp%\vpn.txt
echo NETCOMPONENTS= >> %temp%\vpn.txt
echo ms_msclient=1 >> %temp%\vpn.txt
echo ms_server=1 >> %temp%\vpn.txt
echo. >> %temp%\vpn.txt
echo MEDIA=rastapi >> %temp%\vpn.txt
echo Port=VPN3-0 >> %temp%\vpn.txt
echo Device=Мини-порт глобальной сети (PPTP) >> %temp%\vpn.txt
echo. >> %temp%\vpn.txt
echo DEVICE=vpn >> %temp%\vpn.txt
echo PhoneNumber=a2.ms.ru >> %temp%\vpn.txt
echo AreaCode= >> %temp%\vpn.txt
echo CountryCode=0 >> %temp%\vpn.txt
echo CountryID=0 >> %temp%\vpn.txt
echo UseDialingRules=0 >> %temp%\vpn.txt
echo Comment= >> %temp%\vpn.txt
echo FriendlyName= >> %temp%\vpn.txt
echo LastSelectedPhone=0 >> %temp%\vpn.txt
echo PromoteAlternates=0 >> %temp%\vpn.txt
echo TryNextAlternateOnFail=1 >> %temp%\vpn.txt
echo. >> %temp%\vpn.txt
rem type %temp%\vpn.txt >> "%FULLPATHFILE%"
copy /y %temp%\vpn.txt "%FULLPATHFILE%"
echo ping -n 15 127.0.0.1 >nul
del /f /q %temp%\vpn.txt >nul
exit /b 0
:filesize
set size=%~z1
exit /b 0
:GetName
set /a i= 0
set NameVPN=%DefaultNameVPN%
:NextName
find /C "%NameVPN%" %FULLPATHFILE%
@echo %errorlevel%
if %errorlevel% equ 0 (
set NameVPN=%DefaultNameVPN%%i%
set /a i+=1
goto :NextName
) else (
exit /b 0
)