|
|
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Пожалуисто посмотрите! что может быть легче, сохранить ветвь из Реестра в файл TRegistry& regKey = *new TRegistry(); regKey.SaveKey("Software\\My Software", "c:\\Info.reg"); delete ®Key; И что из етого выходит? Появляется файл, но пустой! Подскажите, может я что нитак делаю? Доступ к реестру открыт записывать могу, читать могу а вот в файл експортировать неполучается! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2004, 14:47 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Ну вот пример допустим попробуй .. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2004, 15:03 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Нет, всеравно образуется пустой файл, попробуй сам увидеш (Borland C++ 6) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 08:54 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Хмм , будет время посмотрю ... ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 10:06 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Господа, небольшой поправка однака! Приведенный код наверное рабочий, но перед бакапом реестра надо получить привилегии. Вот например: (бильдером правда не владею, тока API) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Код надо запускать из-под админа или backup operator, в общем у кого привелегии есть. Да, и еще- всегда проверяйте наличие файла, в который писать собираетесь. Если он есть - уничтожайте предварительно, ибо этот API это перетирать не умеет. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 11:11 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Немного изменил и запустил под билдер, так вот дает ошибку на последних двух шагах: TOKEN_PRIVILEGES tp; HANDLE hToken; LUID luid; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken )) ShowMessage("Token Open Error"); if(!LookupPrivilegeValue(NULL, SE_BACKUP_NAME, &luid)) ShowMessage("Privilegies Error"); tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL )) ShowMessage("Set Privileges Error"); HKEY hk; LONG result; DWORD dwDisposition; if(RegOpenKeyEx(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_EXECUTE,&hk)!=ERROR_SUCCESS) MessageBox(NULL,"registry open","ERROR",MB_OK); result=RegSaveKey(hk, "c:\\test.reg", NULL); if(result!=ERROR_SUCCESS) { char err[80]; sprintf(err,"error: %u result=%u",GetLastError(),result); MessageBox(NULL,err,"ERROR",MB_OK); } if(RegCloseKey(hk)!=ERROR_SUCCESS) MessageBox(NULL,"registry close","ERROR",MB_OK); error 1300 result 1314! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 15:27 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Да кстати RegOpenKeyEx - winNT version файл создается пустым ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 15:29 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
Ой простите --null--, кажется работает, но только с правами Админа или Бакап оператора, неужели нельзя с провами обычного юзера? Я же в принципе могу записываит и читать все значения реестра и даже могу запускать regedit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2004, 07:45 |
|
||
|
Реестр
|
|||
|---|---|---|---|
|
#18+
AliGator, насколько я понимаю, нельзя. В отличие от просто просмотра ключей это считается операцией резервного копирования и потому требует привилегий. И именно SE_BACKUP_NAME. Впрочем, тут есть широкое поле для экспериментов - Вам и карты в руки :-) Между прочим, regedit как-то это делает из-под простого юзера - либо он не пользуется этим API, либо как-то с правами мутит, может импесронацию делает или еще что. Поэтому забавно просто посмотреть в отладчике, какой вызов делает regedit, когда экспортирует в файл. Может статься, что он просто тупо рекурсивно читает ветвь и "руками" ее сохраняет, не удивлюсь, это ж технологии Microsoft :-) Кстати, не помню, как это работает в Win9x, где нету привилегий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2004, 09:52 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=427&tid=2034191]: |
0ms |
get settings: |
5ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 345ms |

| 0 / 0 |
