我为我的客户编写了一个应用程序,这是一个电子应用程序。
为了捕获屏幕,我使用了 .dll 库,因为安装无法将 DLL 复制到 system32 文件夹,安装后我创建了一个批处理文件将 DLL 复制到 system32 文件夹。
安装,将应用程序安装到 C:\Users\user\AppData\Local\Programs\
如果我以管理员身份运行此批处理,它会将 DLL 复制到 System32 文件夹,但应用程序无法访问它。
如果我以管理员身份而不是以 C:\Users\user 的身份运行安装,它会安装在 C:\Users\admin,结果相同,我无法访问 DLL,现在应用程序安装到管理员用户。
如果我以管理员身份运行该应用程序,结果仍然相同。可以访问 DLL,但这次尝试访问管理员的临时文件夹,该应用程序再次无法运行。
为什么以管理员身份运行不只是使用权限安装而且安装到该用户的文件夹?
附注:有一个名为“admin”的用户,不是管理员,我尝试启用没有密码的管理员用户。我尝试在那里安装一切正常。我切换回普通用户,那里不起作用。我尝试更改 System32 文件夹的所有权,也没有用。这里的问题是什么?
答案1
经过长时间的努力,我找到了答案。
1.以管理员身份运行安装包安装到另一个文件夹: 事实证明,这是安装程序的行为,无论用户运行它,它都会选择文件夹。它与系统本身无关。它不关心哪个用户登录。在这种情况下,electron-builder 就是问题所在。
2.访问错误: 实际上,系统能够在临时文件夹中创建一个文件,但它显示“我无法访问”是一条错误消息,使用依赖项遍历器进行测试显示还有其他缺失的 DLL 文件。安装 Visual Studio 2019 可再发行组件包解决了该问题。但不确定为什么它适用于(隐藏/默认)管理员用户,而不适用于标准用户。