This is a small utility to modify any kind of INI-Files.

It is DOS-based, so you can easily do the modifications from your
batchfile or your network login script.

As example, you can add the TimerCriticalSection=10000 for all users
in the SYSTEM.INI file, just by doing the following:

Create a file named SYSTEM.CMD which contains:
+[386enh]TimerCriticalSection=10000

And put the following command in you (system) login script:
maintini.exe N:\WINDOWS\SYSTEM.INI SYSTEM.CMD

After the new login, all your users have the new parameter set correctly
for the new WINUP9 from Novell.

A backupfile with the extension .BAK is made before modifying the file.
Normaly all section, keys and values are NOT case sensitive.
However _ and * give the possibility to match only if the case matches too.

MAINTINI can process INI-Files of any size, even larger than 64kBytes.
Just the CMD File should not have to much commands, because a dynamic list
with all commands is created. (The actual upper limit are 600 commands,
if you need more, then send me a mail or just splitt it in two cmd-files.
Anyway, to process a INI-file with 600 commands to apply is just slow.)

Commands of Maintini:

-[section]                The corresponding section is deleted
-[section]Key             The Key in section will be deleted
-[section]Key=Value       The Key is only deleted if the Value matches exactly
                          This is used to delete device=... lines in system.ini
_[section]Key=Value       Same as - but Value is case sensitive
                          Normaly not used.

#[section]                The corresponding section is commented
#[section]Key             The Key in section will be commented
#[section]Key=Value       The Key is only commented if the Value matches exactly
                          This is used to comment device=... lines in system.ini
@[section]                The ; in front of the corresponding section is removed
@[section]Key             The ; in front of the Key in section is removed
@[section]Key=Value       The ; in front of the Key is removed, if the Value matches exactly
                          This is used to uncomment device=... lines in system.ini

+[Section]Key=            Adds Key in Section.
+[Section]Key=Value       Adds Key and Value to section.
&[Section]Key=Value       This Key/Value is always inserted, even if already
                          a key exists, but with a different value. Used to
                          insert device=... lines in System.ini
*[Section]Key=Value       Same as &, but the value is casesensitive
                          Normaly not used.

![Section]Key=Value       A key is inserted in section, but a numeric value is added to
                          Key, representing the highest+1 value of Key.
                          (Only ?) used for Progman.ini to add new program groups
                          [Section]
                          Key1=Value1
                          Key2=Value2
                          Key3=Value3

                          ![Section]Key=ValueZ

                          Gives
                          [Section]
                          Key1=Value1
                          Key2=Value2
                          Key3=Value3
                          Key4=ValueZ

                          If the command in ![Section]Key=Value2 then
                          the line is not duplicated.
                          You can add multiple ! entrys per Section/Key pair in one pass

>[Section]Key= Value      Adds Value to an existing value. The old Value is preserved
                          and the Value is added added at the end of the line.
                          
                          [Section]
                          Key=Value0

                          >[Section]Key= Value1

                          Gives
                          [Section]
                          Key=Value0 Value1
                          
                          It is very important, that you have a space or a period sign
                          before the Value, this is to ensure that the , sign is placed
                          at the right place (or even ignored if this is the first value).

<[Section]Key=Value       Deletes Value from the Key/Value line. Leading and trailing 
                          period-signs are cut off.

r[Section]Original=NewValue The string <Original> is replaced with <NewValue>, but only in
                            if [Section] is the current one. If you want to replace the
                            Original in ALL sections (even in the section definition) then
                            specify [] as the section. 

R[Section]Original=NewValue Same as r command, but the case must match.


You should not use more than one < or > command for each Section/Key !!!!
This does not behave correctly. If this is a limitation for you, 
then you can tell me why you want another version who can do this.
I will then implement it, if I find the time to do it.

In ALL Value-strings, you can insert a sequence %...%, to replace the
text with the content of an DOS environment variable.

+[boot]run=F:\USER\%USER%\WINDOWS\CAL.EXE

%USER%  will be replaced with the value of the USER - Environment variable.

When It finds a single % in the line then the % remains in the value.

If it finds %%, then it is replaced with a single %.
So you can use F:\USR\%%USER%%\TEMP to be transformed into
F:\USR\%USER%\TEMP. If you simply use F:\USR\%USER%\TEMP it will
try to replace %USER% with the corresponing environment variable.
You must use this, every time you have more than one % sign
in the value, but don't want to replace it.

If the specified environment variable does not exist, then a warning message
is displayed on the screen, and the %...% is removed from the value.


When you want to rename a section, then do the following:
r[][OldSectionName]=[NewSectionName]
Maintini then looks in each line for the Old-name and if it finds it,
it replaces it with the new name. You should include the [..] to be
shure, that only section headings are replaced.

With the r command it is very easy to move a program/library to a new loaction.
Of course you must take care to correct all other references to that location.
(In the registeration database OLE, in DDE-statements and of course the
 program icon in the program manager.)

MAINTINI is emailware, which means if you find this program usefull,
you should send me a email. (Or a nice postcard if you don't have
acess to a email system)

If you send me a message, then I will inform you of all changes and
new versions of this utility.


My email adress:

Compuserve   :  100034,3536 Andre Schild
Internet     :  100034.3536@compuserve.com
AT&T Mail    :  mhs!csmail!100034.3536
X400         :  /c=US/ad=compuserve/pd=csmail/d.id=100034.3536
MCI          :  TO: Andre Schild   
                EMS: COMPUSERVE/ MCI ID:281-6320
                MBX: 100034,3536
MHS          :  MAIL@CSERVE {100034,3536}

Postal adress:  Andre Schild
                Pfeidstrasse 8
                CH-2555 Bruegg b. Biel
                Switzerland
