我正在管理一个由大约 15 台 Windows 8.1 计算机/用户组成的小型网络。这些用户都没有本地管理员权限(因为我不想每天 24 小时都花在从计算机中删除病毒和恶意软件上)
我们使用一家名为 8x8 的公司提供的软件电话进行通信。该软件很棒,不需要管理员权限即可运行,但是,他们大约每月发布一次新版本。当这种情况发生时,为了将软件升级到最新版本,我必须亲自前往计算机并使用本地管理员密码来允许升级。
我希望有一种方法可以“信任”或“列入白名单”特定的正在运行的程序,以允许该程序直接从本地用户帐户(没有管理员访问权限)升级
值得一提的是,这款特定软件确实会检查更新并从(在我看来)程序内部启动更新。这意味着,我不必访问网站,下载 .exe 文件并运行它。如果是这样的话,我可以看出事情可能会更难,因为我怀疑是否有办法通过名称或类似的东西将某个 .exe 文件列入白名单。
有任何想法吗?
答案1
您可以使用应用程序兼容性工具包将应用程序列入白名单,这样它就不需要管理权限来运行……有时。这个过程非常简单,但根据应用程序处理事情的方式,它并不总是有效。以下是该过程的粗略介绍:
- 在计算机上安装您想要列入白名单的软件。
- 在同一台计算机上下载并安装适当的应用程序兼容性工具包(对您来说,即 Windows 8.1 ACT)。
- 启动适当的兼容性工具包 - 如果您需要将 32 位应用程序列入白名单,则启动 x86 工具包;如果您需要将 64 位应用程序列入白名单,则启动 x64 工具包。
- 创建一个数据库并向其中添加新的“应用程序修复”。
- 按照“应用程序修复”提示选择应用程序并填写适当的详细信息。重要的是将“兼容模式”设置为“runAsInvoker”。这通常会有效地将应用程序列入白名单。
- 在创建“应用程序修复”的最后一步,它将显示大量有关应用程序的信息,它将使用这些信息来“匹配”规则。如果您希望此功能在定期更新的程序上继续工作,则需要删除任何引用版本号的字段(毕竟,版本在更新后会/应该会发生变化)。
- 完成后,将数据库保存为“SDB”文件。
- 使用以下命令在每台计算机上安装“SDB”文件:
sdbinst {Local path to sdb file}
我建议使用组策略在本地计算机上创建一个文件夹,将 SDB 文件和脚本复制到其中,然后在计算机启动时运行该脚本。在这种情况下,您的脚本将需要使用“n”标志卸载现有的 SDB 文件,并使用“q”标志静默安装。此命令如下:
sdbinst -n "database-name"
sdbinst -q {Local path to SDB file}
话虽如此,当应用程序下载文件、解压文件,然后尝试启动解压文件中包含的另一个应用程序时,此过程将不起作用(毕竟,就计算机而言,这是一个不同的应用程序)。您可以通过获取更新文件、将其部署到本地计算机上的特定文件夹(网络文件夹不起作用,因为应用程序在启动前会被复制到本地计算机上的临时文件夹中)并更新白名单以指向适当的更新应用程序来解决此问题。
对于某些应用程序来说,这也不起作用。根据应用程序设置的好坏,您可能别无选择,只能向所需用户授予运行这些文件的计算机的本地管理员访问权限。我遇到过这样的问题,因为有些制造软件很糟糕(从 IT 管理角度来看),我们别无选择,只能使用。
我已成功将此过程用于 UPS World Ship 等定期推出需要管理员权限的更新的应用程序。此过程不适用于 Sage 50 Accounting 等软件,这些软件打包了单独的更新文件,而这些文件只是其他更新文件的包装器,所有更新文件都尝试从临时文件夹位置运行...
因此,底线是,尽管这可能是一种修复方法,可以将应用程序列入非管理员用户的白名单,但您的结果会因应用程序而异。除此之外,您还需要寻找一些应用程序管理软件,这些软件还可以处理推送更新……对于小型企业来说,这可能过于昂贵(或完全是过度的)。