Use the SetTimeZoneInformation API I don't think MS have anticipated your need but it may be possible to define a custom time zone with a 10 minute offset. This article contains example data for replacing the timezone table - with a small amendment you could achieve what you want.
Update - here's what I gleaned from various MS documents
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Afghanistan Standard Time]
"TZI"=hex:f2,fe,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"Display"="(UTC+04:30) Kabul"
"Dlt"="Afghanistan Daylight Time"
"Std"="Afghanistan Standard Time"
The above is an example registry entry. Note the TZI key and value
This [TZI] structure specifies information specific to the time zone.
Copy
typedef struct _TIME_ZONE_INFORMATION {
LONG Bias;
WCHAR StandardName[32];
SYSTEMTIME StandardDate;
LONG StandardBias;
WCHAR DaylightName[32];
SYSTEMTIME DaylightDate;
LONG DaylightBias;
} TIME_ZONE_INFORMATION;
Bias
Specifies the current bias, in minutes, for local time translation on this computer.
The bias is the difference, in minutes, between UTC and local time.
All translations between UTC and local time are based on the following formula.
UTC = local time + bias
The above is for WinCE but I expect XP/Vista/7 have similar structure for TZI. This can be verified by decoding some existing registry entries and seeing if the structure matches.
A brave person could use Regedit to create new registry entries defining a new time-zone with a suitable TZI "bias" value. They could then set their timezone to the one just created.