Всем привет. Вообщем такая проблемка: не могу в реестр внести.. Code: var Keys: HKey; begin path1 = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'; if RegOpenKeyEx($80000002, PChar(path1), 0, Longword($F003F), keys)=0 then; RegSetValueEx(keys, ExtractFileName(ParamStr(0)), 0, 1, PChar(WinDirStr+'\' + ExtractFileName(ParamStr(0))), length(ParamStr(0))+2); end; предупреждение не выводит и не пишет в реестр. делаю так Code: var reg:Tregistry; begin reg:=Tregistry.Create; reg.RootKey := $80000002; reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); reg.WriteString(ExtractFileName(ParamStr(0)),PChar(WinDirStr+'\' + ExtractFileName(ParamStr(0)))); reg.Free; так выводит предупреждение и всеровно не пишет подскажите как можно получить права или обойти все это.
Для прав, открывешь приложение с правами администрратора, но для этого рздела права ненужны. ПРоблема скорее всего в том что у тебя приложение 32х, для него в реестре есть раздел Wow6432Node\Microsoft\Windows\CurrentVersion\Run , а в тот что пишешь ты предназначен для 64х, но если ты серовно хочешь записать именно в него, то открывай ключ с флагом KEY_WOW64_64KEY
Раздел Wow6432Node\Microsoft пустой. От имени админа запускаю тоже не прописывает, а вот запускаю в режиме дебуга в делфи прописывает. Пытался этим: Ссылка но тока на XP.
Ссори я там не дописал эта константа. Code: const path1 = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run';
Ну во-первых, если ты пытаешься писать в реестр через айпишку напрямую, а не через обертку TRegistry, то хотя бы не поленись зайти в msdn и почитать, что зачем и в каком порядке вызывается, и какой результат может быть получен, это избавит от много потерянного в пустую времени. В TRegistry при невозможности записи бросается исключение, какое оно у тебя? Во-вторых твой код очень может быть подозрителен аверам, как попытка прописать себя в автозагрузку из папки %windir% и приложение будет расцениваться, как не доверенное и они благополучно "лишают" тебя прав на запись в данный раздел, чего, возможно, не происходит под отладкой, так как приложение запускается в контексте ide
Точно, я чет не подумал откуда лучше писать в регистр без проблем(я имею ввиду директорию). спасибо... да , если в коде писать ветку так : reg.RootKey := $80000002; и делать через обертку TRegistry то антивирусники ругаються, а если через: Regini:TRegIniFile; то молчат... Спасибо всем.