Sub WriteINIStringVirtual()Sub WriteINIStringVirtual(Section, KeyName, value, FileName) WriteINIString Section, KeyName, value, _ Server.MapPath(FileName) End Sub Function GetINIStringVirtual()Function GetINIStringVirtual(Section, KeyName, Default, FileName) GetINIStringVirtual = GetINIString(Section, KeyName, Default, _ Server.MapPath(FileName)) End Function 'Work with INI files In VBS (ASP/WSH) 'v1.00 '2003 Antonin Foller, PSTRUH Software, http://www.pstruh.cz 'Function GetINIString(Section, KeyName, Default, FileName) 'Sub WriteINIString(Section, KeyName, value, FileName) Sub WriteINIString()Sub WriteINIString(Section, KeyName, value, FileName) Dim INIContents, PosSection, PosEndSection 'Get contents of the INI file As a string INIContents = GetFile(FileName) 'Find section PosSection =InStr(1, INIContents, "["& Section &"]", vbTextCompare) If PosSection>0Then 'Section exists. Find end of section PosEndSection =InStr(PosSection, INIContents, vbCrLf &"[") '?Is this last section? If PosEndSection =0Then PosEndSection =Len(INIContents)+1 'Separate section contents Dim OldsContents, NewsContents, Line Dim sKeyName, Found OldsContents =Mid(INIContents, PosSection, PosEndSection - PosSection) OldsContents =split(OldsContents, vbCrLf) 'Temp variable To find a Key sKeyName =LCase(KeyName &"=") 'Enumerate section lines ForEach Line In OldsContents IfLCase(Left(Line, Len(sKeyName))) = sKeyName Then Line = KeyName &"="& value Found =True EndIf NewsContents = NewsContents & Line & vbCrLf Next If isempty(Found) Then 'key Not found - add it at the end of section NewsContents = NewsContents & KeyName &"="& value Else 'remove last vbCrLf - the vbCrLf is at PosEndSection NewsContents =Left(NewsContents, Len(NewsContents) -2) EndIf 'Combine pre-section, new section And post-section data. INIContents =Left(INIContents, PosSection-1) & _ NewsContents &Mid(INIContents, PosEndSection) else'if PosSection>0 Then 'Section Not found. Add section data at the end of file contents. IfRight(INIContents, 2) <> vbCrLf AndLen(INIContents)>0Then INIContents = INIContents & vbCrLf EndIf INIContents = INIContents &"["& Section &"]"& vbCrLf & _ KeyName &"="& value endif'if PosSection>0 Then WriteFile FileName, INIContents End Sub Function GetINIString()Function GetINIString(Section, KeyName, Default, FileName) Dim INIContents, PosSection, PosEndSection, sContents, value, Found 'Get contents of the INI file As a string INIContents = GetFile(FileName) 'Find section PosSection =InStr(1, INIContents, "["& Section &"]", vbTextCompare) If PosSection>0Then 'Section exists. Find end of section PosEndSection =InStr(PosSection, INIContents, vbCrLf &"[") '?Is this last section? If PosEndSection =0Then PosEndSection =Len(INIContents)+1 'Separate section contents sContents =Mid(INIContents, PosSection, PosEndSection - PosSection) IfInStr(1, sContents, vbCrLf & KeyName &"=", vbTextCompare)>0Then Found =True 'Separate value of a key. value = SeparateField(sContents, vbCrLf & KeyName &"=", vbCrLf) EndIf EndIf If isempty(Found) Then value =Default GetINIString = value End Function 'Separates one field between sStart And sEnd Function SeparateField()Function SeparateField(ByVal sFrom, ByVal sStart, ByVal sEnd) Dim PosB: PosB =InStr(1, sFrom, sStart, 1) If PosB >0Then PosB = PosB +Len(sStart) Dim PosE: PosE =InStr(PosB, sFrom, sEnd, 1) If PosE =0Then PosE =InStr(PosB, sFrom, vbCrLf, 1) If PosE =0Then PosE =Len(sFrom) +1 SeparateField =Mid(sFrom, PosB, PosE - PosB) EndIf End Function 'File functions Function GetFile()Function GetFile(ByVal FileName) Dim FS: Set FS =CreateObject("Scripting.FileSystemObject") 'Go To windows folder If full path Not specified. IfInStr(FileName, ":") =0AndLeft (FileName,2)<>"/"Then FileName = FS.GetSpecialFolder(0) &""& FileName EndIf OnErrorResumeNext GetFile = FS.OpenTextFile(FileName).ReadAll End Function Function WriteFile()Function WriteFile(ByVal FileName, ByVal Contents) Dim FS: Set FS =CreateObject("Scripting.FileSystemObject") 'On Error Resume Next 'Go To windows folder If full path Not specified. IfInStr(FileName, ":") =0AndLeft (FileName,2)<>"/"Then FileName = FS.GetSpecialFolder(0) &""& FileName EndIf Dim OutStream: Set OutStream = FS.OpenTextFile(FileName, 2, True) OutStream.Write Contents End Function