Как программно изменять значения в реестре Windows Vista? Если включен "Контроль учетных записей" (UAC) то прога не меняет нужные значения в ветке HKEY_LOCAL_MACHINE, если выключен - всё работает. Встречал в некоторых прогах, при попытке доступа к реестру, система спрашивает стоит ли давать ей доступ к реестру. У меня такого не происходит, всё успешно завершается, но значения не изменяются. Раньше, как мне кажется, этого не было, значения изменялись при включенном и выключенном UAC. Может что-то изменилось? Хотя, может и кажется... У кого как?
vg Вы уверены, что при попытке доступа, а не при запуске программы? Информацию о необходимости высоких привилегий приложению можно указать в манифесте.
Меняются, но не там, где вы ожидаете. Прочитайте про registry virtualization Например, вы пишите в HKEY_LOCAL_MACHINE\Software ,а система перенаправляет в HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software http://msdn.microsoft.com/en-us/library/aa965884.aspx
При запуске, я неточно выразился. l_inc, Partner Похоже то, что нужно. Только у меня что-то не получается. Раньше у меня был такой манифест для поддержки XP-интерфейса (masm32). Code (Text): <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> Теперь делаю так. Code (Text): <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> Как правильно должен выглядеть манифест с нужными привилегиями?
Кто-нибудь уже использовал в своих программах, написанных на masm32, манифест с указанием высоких привилегий?
Получилось!!! Путём подкулючения внешнего манифеста (создание файла с именем типа "application.exe.manifest" в одной папке с исполняемым модулем). Код в посте №4 правильный. Но меня не совсем удовлетворяет то, что манифест нужно таскать отдельным файлом. Хотелось бы подключать манифест через ресурсы. Судя по всему дело в указываемом номере ресурса. Раньше (для поддержки XP-GUI) я подключал так Code (Text): 1 24 DISCARDABLE "Res/manifest.xml и всё работало. Насколько я знаю 24 - номер группы в ресурсах для манифеста 1 - номер манифеста для определения версии библиотеки comctl32.dll Вероятно, номера могли измениться в новых версиях. Кто, что думает по этому поводу? Где-то можно уточнить?