如何检查注册表项是否存在

2024-06-18

我不知道我的错误在哪里。它总是跳到else分支,但是密钥存在,我检查了几次。

var
  reg : TRegistry;
begin
    with TRegistry.Create do try
      RootKey:=HKEY_CURRENT_USER;
      OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False);
    if KeyExists('nginx.exe') then begin
      ShowMessage('Ja geht ist da');
      Result := True;
      btnAutostart.ImageIndex := 5
    end
    else begin
      Result := False;
      btnAutostart.ImageIndex := 0;
    end;
    finally
      Free;
    end;
end;

你需要打电话ValueExists而不是KeyExists。键是 Regedit 中显示为文件夹的内容,但您正在寻找名为的值nginx.exe在钥匙里HKCU\Software\...\Run.

其他一些评论:

  1. 由于您仅从注册表中读取,因此使用OpenKeyReadOnly而不是OpenKey.
  2. 检查返回值OpenKeyReadOnly万一钥匙打不开。
  3. 如果您确实需要使用 HKLM 执行此操作(如您在评论中所述),请在 64 位系统上运行 32 位进程时注意注册表重定向混乱。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查注册表项是否存在 的相关文章

  • Delphi 返回 TList 时出错

    我做了一个非常简单的应用程序 但我有一个我真的无法理解的问题 看一下这个基本代码 unit Unit1 interface uses Winapi Windows Winapi Messages System SysUtils System
  • 如何在调试器中显示 TStringList 的内容?

    我想在调试应用程序时显示 TStringList 的全部内容 相反 我只是得到指示 Flist 仅显示地址 如果您使用的是 Delphi 2010 或更高版本 调试器允许使用调试可视化工具 http docwiki embarcadero
  • 如何在 Delphi DBLookupComboBox 中选择正确的项目

    我有一个数据库查找组合框连接到数据库查询 那部分工作正常 当我运行程序时数据库查找组合框填充有查询的结果 我想看看数据库查找组合框填充第一项 请选择 当 的时候程序第一次运行或者当一个新项目行动已启动 见下图 另外 如果我正在加载以前保存的
  • 为什么 {$ifopt FINITEFLOAT ON} 无法编译?

    我有这样的构造 ifopt FINITEFLOAT ON message FINITEFLOAT option ON else message FINITEFLOAT option OFF endif 在我的源代码中 它不会编译 这一定是一
  • Delphi IDE导致CPU过热

    我正在使用 Delphi 7 但我已经尝试过 Delphi 2005 2010 版本 在所有这些新版本中 当 Delphi IDE 在屏幕上可见时 我的 CPU 利用率为 50 一个核心为 100 另一个核心为 宽松 当 IDE 最小化时
  • 如何在 WiX 中启动 PowerShell 并正确访问 Windows 注册表?

    Update 有趣的是 如果我运行 32 位 powershell 来运行脚本 它会给我同样的错误 看起来32位powershell无法访问64位注册表树 我尝试使用WixQuietExec64但它给出了同样的错误 我还尝试提供 power
  • 命名管道性能问题

    我使用命名管道进行 C 和 Delphi 之间的过程间通信 C 使用System IO Pipes包 而 Delphi 使用Libby s pipes pas 不幸的是 通信几乎是高性能的 分析显示通信占用了整个运行时间的 72 其余的用于
  • Windows CE 6.0 注册表中的时间设置

    我有一台装有 Windows CE 6 0 的 Motorola MC3100 移动条码扫描设备 现在我想让设备在启动时使用我创建的一些注册表文件与我们的域控制器同步其日期 时间 我使用了下面这两个注册表文件来接近我的需要 REG 1 HK
  • 供所有 Win32 程序员在 Windows Aero Glass(DWM、GDI、GDI+)上绘图的文档和 API 示例

    我正在寻找良好的资源来学习使用 Win32 GDI API 或任何替代它的内容 以便使用 Win32 API 直接在玻璃窗体上进行绘制和绘制 当我使用 Delphi 时 我将其标记为 Delphi 或 Visual C 您能找到的任何代码示
  • 如何通过 PowerShell 获取注册表项的所有权?

    我尝试通过 PowerShell 获取注册表项的所有权 但它悄无声息地失败了 我正在使用以下代码 get the username of the current user uname System Security Principal Wi
  • 可以在滚动条上绘画吗?

    是否可以在 TMemo TListbox 等标准控件的滚动条上进行绘制 我所需要的只是在滚动条上绘制一些基本形状 并且我试图避免从 stratch 实现整个滚动内容 有什么指点吗 蒂亚 确实有可能 你可能想看一下WM NCPAINT消息 这
  • delphi THashSHA2 在大文件上返回错误的 SHA256

    Data Cloud CloudAPI pas has class function TCloudSHA256Authentication GetStreamToHashSHA256Hex const Content TStream str
  • Delphi 中是否有一些功能可以将带有 html 命名和编号实体的字符串转换为 unicode 文本?

    我从 mysql 数据库读取数据 该数据库由 php 脚本填充 所有特殊字符都会转换为命名或编号的 html 实体 例如 a m p 2 8 6 我知道没有办法将这些字符转换回 Delphi 中的原始字符作为 unicode 字符串 有没有
  • 缓冲区为空,但 IdTCPClient.IOHandler.InputBufferIsEmpty 为 false

    我在使用 idTCPClient 从 telnet 服务器读取缓冲区的以下代码中遇到问题 procedure TForm2 ReadTimerTimer Sender TObject var S String begin if IdTCPC
  • Indy 10 和 sslvTLSv1_2

    我发布的网站目前支持 TLS v1 1 和 TLS 1 2 他们很快将只允许 TLS 1 2 版连接 为此我将 Delphi 5 升级到了 Indy 10 目前 我在代码中创建组件 并且一次运行 3 个线程一切都运行良好 HTTp TIdH
  • 当系统文件实际存在时找不到它

    系统找不到alg exe但它确实存在 c windows system32 alg exe 我最近从 Win 7 x86 迁移到 x64 当我使用 x86 时 我对此没有任何问题 尝试了 Delphi 7 和 XE2 我正在使用的代码 if
  • Delphi TTask - PPL 中匿名函数中的变量捕获如何工作?

    我开始深入研究 Delphi D11 PPL 并编写了这个小例子 procedure TForm2 LaunchTasks const cmax 5 Var ltask ITask i j Integer begin for i 1 to
  • 如何从后台线程有效地对 Delphi 6 框架或表单执行图像流预览?

    我有一个 Delphi 6 应用程序 用于接收和处理来自外部摄像头的图像流 我将代码放在后台线程上 因为它占用大量 CPU 而且我不希望它干扰在主线程上运行的用户界面代码 我想使用我从相机的 JPEG 帧创建的 TBitmap 来更新表单或
  • 光标不工作时完成课程

    我在 2010 年和 XE2 中广泛使用了 Delphi 中的 Complete Class at Cursor 函数 最近 在安装 XE2 的 Update 4 后 Cursor 上的 Complete Class 停止工作 经过一些研究
  • 惠普定制 OEM Windows 上的 Delphi 平台错误

    我在设置我的计算机以便运行 Delphi 时不断遇到相同的错误 我已经在PLATFORM环境变量 将其转换为 win32 但仍然给出相同的错误 错误错误 平台变量 HPD 无效 PLATFORM 必须是以下之一 Win32 Win64 An

随机推荐