Từ góc độ nhà phát triển UAC của Windows có thể có vấn đề đối với một số phần trong ứng dụng Delphi của bạn, nếu ứng dụng không được quản trị viên điều hành. Một hoạt động như vậy là ghi vào cơ sở dữ liệu Registry.
Bạn phải "yêu cầu quyền quản trị" bằng cách tạo ra một ứng dụng file manifest ....
Windows Vista/7 - User Account Control
User Account Control là một thành phần bảo mật trong Windows Vista . UAC cho phép người dùng thực hiện các tác vụ phổ biến là người không phải là quản trị viên, được gọi là người dùng chuẩn trong Windows Vista và là quản trị viên mà không phải chuyển người dùng, đăng xuất hoặc sử dụng Run As. Để giúp ngăn phần mềm độc hại cài đặt âm thầm và gây nhiễm toàn bộ máy tính, Microsoft đã phát triển tính năng UAC.
Từ góc độ phát triển các tính năng UAC sau đây là quan trọng:
Tất cả quá trình được bắt đầu như là Người dùng chuẩn như mặc định Một Standard User không thể: file Thay đổi trong thư mục Program Files file Thay đổi trong Windows hoặc System32 thư mục Thay đổi registry dưới HKLM \ Software Thay đổi ngày máy địa phương và thời gian ... danh sách vẫn tiếp tục ...
lập trình chỉnh sửa registry để chạy ứng dụng Delphi của bạn trên Windows Sta rtup
Bằng cách lập trình chỉnh sửa Windows Registry, sử dụng đối tượng TRegistry, bạn có thể "tự động" bắt đầu chương trình bất cứ khi nào Windows khởi chạy. Thủ tục bạn có thể sử dụng để buộc "auto-run-trên-Windows-khởi động" cho các ứng dụng của bạn có thể trông giống như:
procedure RunOnStartup(const sCmdLine: string; bRunOnce: boolean = false; Remove: Boolean = false) ;
var
sKey: string;
Section: string;
const
ApplicationTitle = ”Your Application TITLE”;
begin
if (bRunOnce) then
sKey := 'Once'
else
sKey := '';
Section := 'Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0;
with TRegIniFile.Create('') do
try
RootKey := HKEY_LOCAL_MACHINE;
if Remove then
DeleteKey(Section, ApplicationTitle)
else
WriteString(Section, ApplicationTitle, sCmdLine) ;
finally
Free;
end;
end;
Trên Vista/7, nếu người dùng chạy các ứng dụng không có quyền quản trị các mã trên sẽ thất bại, do UAC!
Giả mạo UAC Quyền - Làm thế nào để Yêu Cầu Execution Level
Thậm chí nếu người dùng chạy các mã trên không phải là một admin, bạn có thể, như một nhà phát triển trang bị cho ứng dụng của bạn với một loại đặc biệt của tài nguyên nhúng: Ứng dụng tệp kê khai. Có tệp kê khai sẽ đảm bảo UAC của Vista sẽ cho phép mã của bạn thực thi.
Sau đây là các bước sau:
Tạo file XML với nội dung sau:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0]
<assemblyIdentity version="1.1.1.1"
processorArchitecture="X86"
name="YourApplicationExeName"
type="win32"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2]
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Tên file XML này như YourApplicationName.manifest Tạo một file văn bản với nội dung sau: 1 24 "YourApplicationName. manifest "
Đặt tên tệp văn bản này là YourApplicationName.RC bằng dòng lệnh thực hiện lệnh sau: brcc 32 YourApplicationName.RC -foYourApplicationName.REC
này sẽ tạo ra một file resource mới gọi YourApplicationName.REC
Sao chép tập tin YourApplicationName.REC này vào con đường tài nguyên của ứng dụng của bạn. Bao gồm tệp tài nguyên này vào ứng dụng DPR của bạn, như: {$R YourApplicationName.REC}
Cuối cùng, hãy tạo ứng dụng của bạn - bây giờ đã sẵn sàng để có quyền quản trị trên Windows Vista. Lưu ý 1: trong các bước trên, thay thế "YourApplicationExeName" bằng tên ứng dụng thực tế của bạn. Lưu ý 2: Các bước trên tạo tệp tài nguyên được lưu trữ bên trong tệp EXE của ứng dụng của bạn. Thông tin thêm về Tài nguyên trong các ứng dụng Delphi.
đọc thêm trong http://delphi.about.com/od/delphitips2009/qt/delphi-vista-registry-run-on-startup.htm
Mẹo: Bạn có thể muốn thử phát triển dưới tài khoản người dùng không có quyền lực. Có, đôi khi nó có thể hơi phiền toái một chút, nhưng bằng cách này bạn chắc chắn rằng "những điều bất ngờ" như bạn vừa mới gặp không làm bạn phải đối mặt. Đó là chính sách của công ty tại rất nhiều cửa hàng phát triển vì lý do chính đáng. –
Ứng dụng của bạn sẽ hoạt động như thế nào trong Windows 2000 hoặc Windows XP như một người dùng chuẩn? Điều đó sẽ hướng dẫn bạn cách nó sẽ hoạt động trong Windows Vista hoặc Windows 7 như một người dùng chuẩn. –