在我的工作场所,Windows 7 计算机正在推广,但用户没有被授予管理权限。我的部门创建了在用户计算机上本地运行的应用程序,这些应用程序运行正常(就我们所见)。但有一个应用程序却不行。
它是更新其他应用程序的应用程序(我们的“更新代理”)。因此,当用户运行更新代理时,他们会立即因错误而停止,因为该应用程序无法写入 C:\Program Files\our app\
我们需要一种方法,让这些 Windows 7 计算机允许此应用程序以管理员身份运行,或者在用户执行时具有管理员权限。由于这些用户永远不会获得管理员密码,因此“以管理员身份运行”不是一种选择。用户需要单击快捷方式,然后它以足够的权限运行以修改该文件夹、写入注册表等。
我希望有某种 GPO 或策略,或者可以在域级别配置以允许这种情况发生的东西;或者在客户端计算机上配置一些东西一次。我们的应用程序是.net Framework 1.1和2.0,并用密钥签名。
任何见解都将不胜感激。
答案1
为了实现您想要的目标,我能想到的最简单的方法就是使用管理凭据创建一个计划任务,该计划任务将在设定的时间或间隔运行。
您可以通过命令行(schtasks.exe
)或登录脚本来操作计划任务。
然而,我必须警告你,每当你故意在自己的安全上制造漏洞时,你都会自找麻烦。
只需要一个聪明人就能找到 .exe 的名称,然后更改它或将他/她想要的任何内容放在那里 - 例如,他们可以将 cmd.exe 复制到该位置并重命名,然后他们突然就拥有了具有管理员权限的命令提示符!(好吧,您可以使用 NTFS 权限等,他们可以取出硬盘 - 您可以使用 Bitlocker/加密......)我想说的是,这是你故意引入的一个漏洞。
另一个解决方案是重新设计程序。我建议使用某种系统服务来完成这项工作,并让客户端在需要时调用该服务。这应该会很有效。
答案2
我们最终的做法是创建一个域帐户,该帐户将在每台计算机上充当本地管理员,该帐户由 GPO 推出。然后,我们可以使用这些凭据启动更新应用程序。
答案3
使用 procmon、filemon 和 regmon 找出您需要访问的注册表设置和文件设置,然后使用名为 cacls 和 regini 的默认 Windows 工具来更改这些设置,以便您获得适当的访问权限。
答案4
更改被拒绝访问的文件夹的权限 C:\Program Files\our app\