Started on getting the info directly from the memory. It's quite easy actually, since the retrieval is done through the plugin you can find the ASLR base address using the GetModuleHandle function call and then add it to the memory offset of each value you want to retrieve.
So far I found:
Traction Control, AntiLock, Stability Control, Auto Shift, Steering, Braking, Auto Clutch, Invulnerability, Auto Pitstop, Opposite Lock, Spin Recovery, AI Toggle, Damage Multiplier, AI Strength, Flag Rules, Fuel Usage, Tire Usage, Mech Failures, Practice Time, Qualify Time, Qualify Laps, Warmup Time, Race Laps, Race Time, Race Length (criteria), Weather Type, Race Time Scale, Race Start Type, Max Drivers, Race Start Time, WAN Join Port, WAN Query Port.
Unfortunately I cannot retrieve the game name, mod name, event name, password nor message of the day from the memory. These all have dynamic addresses, so they change every time the server is launched. Instead I found them by matching the process ID of the dedicated window against the ID retrieved from the plugin (as there might multiple servers running) and then retrieving it from the GUI.
The problem with reading the memory is that every .exe update all these addresses are most likely to change, which means the plugin won't work anymore and you have to find all the correct addresses again. Although there won't be 10 patches once the game goes final (I hope), it's still a bit of a nuisance. Would be so much easier to have all this info directly through the plugin.
Alternatively to reading the memory to retrieve all the info above, they could be retrieved from the GUI as well (except for the used ports). This avoids the .exe patch issues, as well as potential issues with custom .exes (I saw some floating around for rFactor, not sure what they modified in them though). The only downside I can see is that you could have another plugin that directly manipulates the memory to set game options (#3 from MaXyM's first post) and the GUI won't reflect these changes till the next manual server relaunch, causing a desynchronisation between the GUI and the internal game values. You never know what other plugins are installed and what they are doing. Plus the plugin system might be updated to allow this manipulation for dedicated servers directly, such as using the SetPhysicsOptions function.
Note that all the retrieval of the values is done through the UpdateScoring method, so it will only work as long as the session is running.
Using the GUI is also a way to execute commands from the plugin (#2 from MaXyM's post), such as typing a server chat message, going to the next session or editing the grid. I'm sure this method is being used already by other plugins. We could write some functions and make them public on this forum, like NextSession(), GoToNextRace(), RestartWeekend(), SendChat() etc. so all can use them. Not sure what would happen if multiple plugins would do that at the same time though, you might get unpredictable behavior with session switches and weekend restarts without knowing which plugin does what

. If someone would want the part on how to fetch the data from the GUI or to push the GUI buttons I'd be happy to share to kickoff the idea above. Otherwise there are probably also plenty of examples to find on google, it's not really hard to do.
I prefer not sharing the code of the memory retrieval as it would make the creation of a cheat plugin ridiculously easy. (Then again, everyone who can program can make it as well and those who can't program probably wouldn't be able to adjust the code. Still, perhaps better to be safe than sorry

)
As for Frank Geyer's idea of "/changelaps +236 Player Name", this might be possible to do as well but it would be a bit complicated. If the plugin were to parse the chats of the game chat (retrieved through the GUI), then scan the memory to find the player name and use an offset to find the memory location of the number of laps, it could manipulate this value. Not sure how feasible this is, as you have to check both whether the chat is done by the server (or more difficult: done by the admin in-game), then scan through the memory to find the correct string and hopefully have a fixed offset for the number of laps address. Sounds like fun to try it out, but again it would be much easier if ISI provides this functionality directly instead of 'hacking' it in a plugin.
Sorry for the long post, just talking out loud to share ideas.