AutoIT Паимаишшшш. По всем моим понятиям и опыту (я работаю с .NET еще с версии 1.0 - ну и глючная же она была, вернее даже с ее бетой), MSIL машина не является машиной исполняющей код. Ее основными задачами являются:
1. Компилить промежуточный (MSIL) код в нативный во время первого к нему обращения.
2. Управлять распределением managed-памяти (кучи), в т.ч. подчищать мусор.
В остальном все идет на уровне родного процессору кода и родных (SIC) для операционки dll-ек. Второй пункт является принципиальным отличием от Java, которая предоставляет доступ к объектам ОС через _свои_ библиотеки, а не родные, тем самым являясь именно виртуальной машиной.
Так что программирование работы с реестром и файловой системой не особо отличается на С# и C++. Только на C# тебе сразу даются объекты для работы с этими системами, а на плюсах ты еще должен их где-то раздобыть.
Немного другой случай - когда ты исполняешь .NET аплеты, запускаемые с удаленного сервера (по SMB или http или еще как нибудь) Вот тогда уже ОС тебе выделяет песочницу, через которую ты можешь что-то сделать только в рамках доверия данной машины той с которой все запускается.
То есть, если ты запускаешь что-то из доверенной зоны, с большой долей вероятности аплету будет доступен и реестр и вся файловая система. Если же ты запускаешь что-то из зоны Internet или чего-нить хуже, ты получишь максимум - процессорное время и сколько-то памяти.
Так что вооружись Рихтером и Ховардом, они расскажут, как все в .NET шоколадно (а это практически всегда так). После этого ты скажешь "Да и ... с этими фреймворками - кому надо - поставят" и станешь фанатом этой системы как им стал я.
А уж после того как ты изучешь вторую версию C#, а за ней и третью, такие вещи как WPF, WWF и WCF, ты на плюсы будешь смотреть с жалкой усмешкой.
Это все мое ИМХО.
Раньше я тоже был плюсовиком-маньяком, пока не увидел что дает .NET.