|
|
1
17
使用TRegistry。构造时创建(KEY_READ),并将RootKey设置为HKLM。
您也可以使用TRegistry。打开特定注册表项时的OpenKeyReadOnly();这也有助于非管理员访问注册表区域。 |
|
|
2
7
|
|
|
3
2
这里没有人提到的另一件事是Vista上的注册表虚拟化问题;Win7(至少)。
在你的特定场景中,这可能不是问题,但我想无论如何我都会提到它,以防它相关。
Here 这是另一个解决其中一些问题的SO问题。 |
|
|
4
1
|
|
|
5
1
从开发人员的角度来看,如果应用程序不是由管理员运行的,Windows的UAC可能会对Delphi应用程序的某些部分造成问题。其中一个操作是写入注册表数据库。 您必须通过创建应用程序清单文件来“请求管理员权限”。...
用户帐户控制是Windows Vista中的一个安全组件。UAC使用户能够以非管理员身份(在Windows Vista中称为标准用户)和管理员身份执行常见任务,而无需切换用户、注销或使用运行方式。 从开发人员的角度来看,以下UAC功能很重要: 更改Program files文件夹中的文件 更改HKLM\Software下的注册表 更改本地机器的日期和时间 编程编辑注册表以在Windows启动时运行Delphi应用程序 通过使用TRegistry对象以编程方式编辑Windows注册表,您可以在Windows启动时“自动”启动程序。
伪造UAC权限-如何请求执行级别 即使运行上述代码的用户不是管理员,作为开发人员,您也可以用一种特殊的嵌入式资源来武装您的应用程序:应用程序清单文件。 拥有清单文件将确保Vista的UAC允许您的代码执行。
将此XML文件命名为YourApplicationName.manifest 创建包含以下内容的文本文件: 1 24“YourApplicationName.manifest” 使用命令行执行以下命令: brcc32您的应用程序名称。RC-foYourApplicationName。录像
复制此YourApplicationName。将REC文件插入到应用程序的资源路径中。
将此资源文件包含到应用程序的DPR中,如下所示:
注1:在上述步骤中,将“YourApplicationExeName”替换为您的实际应用程序名称。 http://delphi.about.com/od/delphitips2009/qt/delphi-vista-registry-run-on-startup.htm |
|
6
0
您的选项包括(a)在不需要管理员权限访问的位置使用INI/XML配置文件,或(b)使用SetACL(公共域)等工具修改HKLM中您自己的子项的安全性。
|