( Обновлено , поскольку предыдущий ответ был неверным.)
Возможно, проблема в том, что вы получаете ретушь value
, которая является буфером, выделенным стеком.Это будет работать только , если вы объявили свою функцию как возвращающую char[256]
- если вы пытаетесь вернуть char*
, то вызывающая сторона получает адрес первого байта в value
, который теперь указывает на неверные данные стека.Вы должны выделить value
как char*
в куче, что позволит вам безнаказанно возвращать указатель.
То, разрешено ли вам читать или редактировать раздел реестра, зависит от того, какие списки ACL являютсяприменяется к ключу, который вы читаете.Можно установить разрешения для ключа таким образом, чтобы не имеющий прав пользователь не мог даже прочитать ключ, но также можно установить разрешения таким образом, чтобы все пользователи могли как читать, так и писать.Ключ, который вы читаете выше , должен быть доступен для чтения всем пользователям, но он не может быть изменен, кроме как администраторами.