Trong chương trình của tôi, tôi kiểm tra cho một khóa registry lúc khởi động và nếu bằng cách nào đó nó không tồn tại Tôi chạy file reg nằm ở wit thư mục ứng dụng sự giúp đỡ của ShellExecute chỉ huy. Làm thế nào tôi có thể tránh nhận được thông báo confimation khi thực hiện lệnh này. Có cách nào để làm điều đó hay vì lý do an ninh không thể?Làm thế nào để tránh thông báo xác nhận khi thực hiện một file .reg với lệnh ShellExecute
Trả lời
Sử dụng/s dòng lệnh switch. (Xem http://support.microsoft.com/kb/82821)
Và làm thế nào để làm điều đó trong Delphi? Tôi vẫn sử dụng ShellExecute? Một ví dụ sẽ được đánh giá cao –
ShellExecute sẽ hoạt động tốt. Bản thân tôi sẽ sử dụng 'reg import' thay vì' regedit'. –
Có thể. Hai phương pháp là:
- % windir% \ system32 \ regedit.exe /s file.reg
- % windir% \ system32 \ reg.exe nhập khẩu file.reg
Hoặc sẽ âm thầm nhập file.reg vào sổ đăng ký.
thử này để nhập các file * .reg,
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;
Bạn cũng có thể thử liên kết này unitEXRegistry.pas
đơn vị unitEXRegistry.pas này có chức năng rất hữu ích để xuất tập tin registry và cũng nhập âm thầm các xuất khẩu * .reg tập tin
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;
Sau đó, nhập khẩu, bạn có thể sử dụng (âm thầm)
procedure TForm1.Button1Click(Sender: TObject);
var
texpr : TExRegistry;
begin
texpr:=TExRegistry.Create;
texpr.ImportRegFile('c:\myReg.reg');
texpr.Free;
end;
Đừng chạy file reg. Sử dụng API đăng ký trực tiếp. –
tôi chắc chắn rằng những lời khuyên bạn cung cấp không có giá trị nhưng bạn có thể xin giải thích là tại sao tôi không nên làm điều đó theo cách này? Và một điều nữa, tệp đăng ký mà tôi muốn thực thi chứa hàng tấn mục nhập được tự động chèn vào bởi một thành phần lưới nhận biết dữ liệu. Nếu tôi cố gắng viết nó theo cách thủ công thì điều đó không có nghĩa là lãng phí thời gian? –
Ví dụ, làm thế nào bạn sẽ đối phó với redirector đăng ký trên hệ thống 64 bit? –