更改注册表值权限命令行或 NSIS

Change registry value permission command line or NSIS

我正在尝试授予普通用户对我创建的注册表值的写入权限。

他们不能对父密钥具有写入权限。

通过regedit,很简单: 1. Select 值 2. 编辑权限(相应更改) 3. 好

但是我很难通过命令行或 NSIS 做同样的事情。

在这种情况下,keyHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,我不会修改它的权限。

如何更改我创建的值的权限?我怎样才能像 regedit 允许的那样,但通过命令行或 NSIS 默默地做到这一点?

值类似于:

[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"My Value"="C:\Please\Let\Me\Change\Permissions\Sadface.exe"

请注意,这是针对脚本软件安装程序的,其构建脚本将在 Mac、Linux 和 Windows 上 运行(NSIS 允许这样做)。捆绑特殊 dlls 或 Windows 可执行文件的建议是可以的,只要它们在安装时很容易捆绑和链接即可。包含 Windows SDK 等工具的解决方案不能被接受,除非占用空间很小,并且只要 DLL 可以轻松捆绑并包含到 LGPL 2.1 项目中。例如安装用户必须 运行 这个,所以解决方案需要合理 portable/distributable.

正如@Noodles 在上面的评论中提到的,无法更改 value 权限,因此不存在解决方案。注册表编辑器实际上提供了 key 权限,通过查看 Window 标题可以观察到这一点,这对于这个特定的解决方案来说是不需要的。