Как избежать сообщения подтверждения при выполнении a.файл reg с командой shellexecute

в моей программе я проверяю ключ реестра при запуске, и если его как-то не существует, я выполняю файл reg, расположенный в папке приложения с помощью команды ShellExecute. Как я могу избежать подтверждения сообщений при выполнении этой команды. Есть ли способ сделать это или по соображениям безопасности это невозможно?

3 ответов


используйте переключатель командной строки /s. (см. http://support.microsoft.com/kb/82821)


Это возможно. Два метода:

  1. %windir%\system32\regedit.exe / s.Редж!--6-->
  2. %windir%\system32\reg.импорт файла exe.Редж!--6-->

либо будет молча импортировать файл.reg в реестр.


попробуйте это для импорта *.reg file,

  procedure ImportRegistry;
       var
        strProgram :String ;
        strCommand :String ;
        fileOne   :String ;
      begin

fileOne:=ExtractFilePath(Application.ExeName)+  'my_Resources\Default.reg';
strProgram := 'REGEDIT' ;
strProgram := strProgram + #0 ;
strCommand := '/SC /C ' + ExtractShortPathName(fileOne) ;
strCommand := strCommand + #0 ;

if ShellExecute(0,nil,@strProgram[1],@strCommand[1],nil,SW_HIDE) <= 32 then
  begin
        ShowMessage(SysErrorMessage(GetLastError)) ; //if there is any error in importing
  end;


end;

также вы можете попробовать эту ссылку unitEXRegistry.pas

эта unitEXRegistry.блок pas имеет очень полезные функции для экспорта файла реестра, а также для импорта экспортированного*.reg file

       procedure exportREgis;
        var
         texpr : TExRegistry;
        begin
         texpr:=TExRegistry.Create;
         texpr.RootKey:=HKEY_CURRENT_USER;
         texpr.OpenKeyReadOnly('\MyKey');
         texpr.ExportKey (ExtractFilePath(Application.ExeName)+'ExportedReg.reg');
         texpr.Free; 
       end;

затем для импорта вы можете использовать (молча)

     procedure TForm1.Button1Click(Sender: TObject);
        var
         texpr : TExRegistry;
        begin
          texpr:=TExRegistry.Create;
          texpr.ImportRegFile('c:\myReg.reg');
          texpr.Free;
       end;