registry - 在 Inno Setup 中获取注册表项的所有权
问题描述
我正在尝试通过安装程序获取此密钥的所有权(以自动化工作):
Computer\HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}
或者
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}
默认情况下,所有者是TrustedInstaller
. 我不能通过这样做,HKCU
因为更改应该适用于所有用户(将 RunAs 更改为 _RunAs)。
我使用命令(或Root: HKCR
ofc):
Root: HKLM; Subkey: "Software\Classes\AppID{{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}"; ValueType: string; Permissions: admins-full
Root: HKLM; Subkey: "Software\Classes\AppID\{{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}"; ValueName: "RunAS"; Flags: deletevalue
Root: HKLM; Subkey: "Software\Classes\AppID\{{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}"; ValueType: string; ValueName: "_RunAS"; ValueData: "Interactive User"
Root: HKLM; Subkey: "Software\Classes\AppID\{{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}"; ValueType: dword ; ValueName: "AppIDFlags"; ValueData: "1"
不幸的是,在另一台计算机上,我在运行此命令后手动将所有者设置为“用户”,只添加了权限,但不幸的是所有者保持不变。当然,我以管理员权限运行所有内容,并且我已经阅读了整个
Registry
部分。
解决方案
Inno Setup 无法更改密钥的所有者。
deletekey
但是您可以要求 Inno Setup 使用flag重新创建密钥。什么应该将所有者更改为运行安装程序的帐户作为副作用。但它显然也会删除所有子键和值。
[Registry]
Root: HKLM; Subkey: "Software\Classes\AppID{{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}"; \
Flags: deletekey
如果您需要更改所有者,同时保留内容,则必须为此运行外部工具。就像 PowerShell 代码:
如何通过 PowerShell 获取注册表项的所有权?
推荐阅读
- python - openpyxl生成的Excel文件打开时需要修复
- css - 在每个样式表配置中自动导入 sass 部分
- haskell - 在检测状态单子中运行状态单子计算的函数
- apache-kafka - 无法使用火花批处理在 kafka 中推送消息
- openid - 用户导入:如何允许多个用户使用相同的电子邮件地址但用户名不同?
- flutter - Flutter:使用 SharedPreferences 保持用户登录
- java - 对于依赖于嵌入 Java 的内容的未发现代码,SonarQube 对新代码覆盖率的质量门失败
- r - 如何为按行计算的前 3 个最高值创建新的 3 列?
- spring - Spring Boot 2.1.7 | 由于 ClassNotFoundException 无法启动应用程序:org.springframework.boot.actuate.metrics.CounterService
- flutter - Dart 格式问题 [VSCODE]