- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下代码尝试创建 RunOnce 条目:
program RunOnceTest;
{$APPTYPE CONSOLE}
uses
SysUtils, Registry, Windows;
var
R: TRegistry;
begin
try
WriteLn('Testing RunOnStartup.......');
R := TRegistry.Create;
try
R.RootKey := HKEY_LOCAL_MACHINE;
R.LazyWrite := False;
R.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True) ;
R.WriteString('this', 'that') ;
R.CloseKey;
finally
R.free;
end;
WriteLn('Test Finished');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
我运行该应用程序,它就会执行。
但是,没有条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
在我的注册表中。我需要管理员权限吗?我还需要做什么?
添加:我应该更好地解释并真正提出一个关于我想要做什么的问题。我试图让我的应用程序在启动时自动运行。许多应用程序都不需要管理员权限即可执行此操作。执行此操作的正常方法是什么?
最佳答案
首先,您需要拥有管理员权限才能在那里写入。大多数情况下,只是安装程序写入此 key ,并且它们通常运行提升。如果您想要这样做,请将其添加到您的应用程序 list 中:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
如果对 HKLM
的写入是由不需要提升的应用程序进行的,那么请考虑将对 HKLM
的写入分离到一个单独的进程中,以便只有注册表项写入需要提升。这是 UAC 的最佳实践。
另一件可能让您烦恼的事情是您的 Delphi 应用程序将是 32 位的,因此会受到注册表重定向的影响。 HKLM\Software
的访问将被重定向到 HKLM\Software\Wow6432Node
。
在 64 位系统上,我认为您应该尽力写入 HKLM\Software
,因此您需要禁用重定向。通过包含 KEY_WOW64_64KEY
来做到这一点在 TRegistry
实例的 Access
属性中。
Windows 在处理 Run
和 RunOnce
键时将合并注册表的两个 View ,但如果您写入注册表的 64 位区域,您的应用程序将留下更清晰的痕迹对于这个特定的键。
关于delphi - 为什么我不能使用 TRegistry 和 Delphi 在 Windows 注册表中创建 RunOnce 条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984404/
我们是一个学习中心,有时由于各种原因我们无法对机器进行系统准备。当我不对机器进行系统准备时,我最终会使用相同的计算机名克隆一台机器 25 次。 然后我必须在每个站点上手动更改计算机名称并在之后重新启动
此命令是否适用于 Linux? runonce --dampen 300 echo "hello" 该命令将采用命令运行和可选标准来限制它执行的频率。 选项 dampen 表示等待 300 毫秒,然后
我知道我可以在Win7注册表全局设置一个runonce键,无论下次哪个用户登录都会执行,使用这个注册表键: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersio
function pageLoad() { ShowPopup(); } 上面的代码将在 pageLoad() 上调用 ShowPopup 。我只需要第一
我有一个看起来像这样的 powershell.exe 调用,它在我的命令行中工作: powershell.exe -noexit -command " & 'C:\Test\test.ps1' " 但
我需要安装一个应用程序,该应用程序将为任何在 Windows 安装上具有配置文件的登录用户运行一次。我不需要它来为新用户运行。我正在使用 Visual Studio 2010 安装项目创建 MSI,如
我有一个 JavaScript 表单,可以进行一些计算,但只想在访问者第一次进入该网站时显示它。 我尝试在我的代码之前添加 jQuery(document).ready(function($) {
我正在使用以下代码尝试创建 RunOnce 条目: program RunOnceTest; {$APPTYPE CONSOLE} uses SysUtils, Registry, Windows
操作系统:Windows 7 Embedded 64 位(使用的模板:应用程序兼容性) 我正在尝试在 SetupComplete.cmd 运行并且计算机重新启动后运行另一个脚本 (SetupCompl
我是一名优秀的程序员,十分优秀!