Какая версия Windows? В Vista + вам необходимы права администратора для установки времени. Запустите вашу программу от имени администратора, и она должна работать.
Что ж, как писал Адам ниже, привилегии администратора строго не требуются, но давайте начнем делать так, чтобы это работало простым способом; -)
Кроме того, я хотел бы ZeroMemory (& st, sizeof (st)), чтобы дополнительные элементы, такие как секунды, не содержали недопустимых значений. А еще лучше, просто инициализировать всех членов структуры.