Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows installer .msi通用应用程序数据本地计算机注册表_Windows Installer_Registry_Acl - Fatal编程技术网

Windows installer .msi通用应用程序数据本地计算机注册表

Windows installer .msi通用应用程序数据本地计算机注册表,windows-installer,registry,acl,Windows Installer,Registry,Acl,我注意到,在我的windows 7系统上,公用appdata文件夹中有许多子文件夹,在hkey_local_machine下有许多软件条目。我想知道软件安装时是如何创建这些条目的,以及是什么使程序能够获取这些条目 .msi文件中是否有创建这些文件夹和注册表项并对其建立适当权限的工具?关于注册表项,msi文件中的“注册表”表将创建注册表项 关于common AppData文件夹,MSI文件使用此属性“CommonAppDataFolder”来引用它 关于权限,“”表负责设置权限 理论上,文件/注册

我注意到,在我的windows 7系统上,公用appdata文件夹中有许多子文件夹,在hkey_local_machine下有许多软件条目。我想知道软件安装时是如何创建这些条目的,以及是什么使程序能够获取这些条目


.msi文件中是否有创建这些文件夹和注册表项并对其建立适当权限的工具?

关于注册表项,msi文件中的“注册表”表将创建注册表项

关于common AppData文件夹,MSI文件使用此属性“CommonAppDataFolder”来引用它

关于权限,“”表负责设置权限


理论上,文件/注册表设置的所有者/创建者是显而易见的,您可以通过查看相应的MSI文件来了解它是如何创建的。否则,您可能必须启用审核,或者使用诸如RegMon/FileMon from之类的工具来查看谁在创建条目。

谢谢。我设法使用Orca添加了一个注册表项。未尝试将文件添加到commonappdata或欺骗权限。现在我还有一百个问题,但我会尽量把自己限制在几个问题上。1) 我不明白现有权限如何影响安装程序。如果启动安装的用户没有执行指定操作(创建文件或注册表)的权限,会发生什么情况?2) 对于需要此类资源的应用程序,通常的做法是什么?以管理员身份安装似乎有点极端。要求管理员手动设置权限或创建权限。1)在XP和以前的版本中,试图将应用程序安装到他们没有写入权限的区域(例如,程序文件)的非管理员用户将导致安装失败。在Vista和forward中,非管理员用户可以在提升期间输入管理员的凭据,安装将继续。2) 一种常见的做法是使用MSI功能“广告”。这允许管理员“祝福”软件包的安装。只有非管理员用户尝试访问(通过快捷方式、COM接口等)该软件包时,才会安装该软件包。此时,该软件包的安装包含管理员的凭据。@William Leara:我使用Orca向hkey_local_计算机添加了一个密钥,并调整了它的保护。我从MSICREATE生成的一个简单的.msi开始,其中包含一个.exe、.txt和.chm)。我在创建密钥时使用了.exe的组件id。然后我重新开始,用同样的动作做了一个转换。我可以(使用orca)将转换应用于.msi的新版本,但当我重新生成.msi时,组件已更改,因此现在我有了指向不存在组件的链接。有什么方法可以固定引用现有组件或为此目的创建新组件?orca中是否有代表当前日期的键值符号?也许我不知道r的转换是什么。我希望在我创建了一个新的.msi之后可以应用转换。我的经验是,当我应用转换并“将转换保存为”时,得到的.msi要小得多,它不包含需要的信息。