我的 W2k8 R2 服务器上安装了一个程序,该程序需要管理员权限才能启动。
我有 5 个用户使用远程桌面远程访问服务器以使用该程序。我不想授予这些用户管理员权限,但我希望他们能够正常运行该程序。
这可能吗?
答案1
最好的办法是找出程序需要访问哪些注册表项和目录位置,并允许用户访问这些区域。
您可以使用以下工具Sysinternals 的进程监视器为此。只需以用户身份登录,启动 Process Monitor,然后运行该程序并记下拒绝访问的区域。
我可能会在 AD 中使用安全组,然后授予该安全组访问这些系统位置的权限。然后您要做的就是将用户添加到该安全组,他们将能够使用自己的凭据在该系统上使用该程序。
答案2
一定要使用 Cypher 的建议。我通过安全组(如果需要,还有注册表项)授予用户对特定安装目录的修改权限,解决了许多棘手的应用程序问题。不幸的是,这假设一个半吊子程序员编写了应用程序,并且 c:\windows 或 c:\windows\system32 中没有一两个文件需要相同的访问权限。
答案3
感谢您的回答,这就是我最终解决问题的方法:
- 在任务计划程序中创建一个计划任务。计划任务启动应用程序。将任务设置为以最高权限级别运行。
- 在所有需要运行该应用程序的用户的桌面上创建一个快捷方式。快捷方式最终看起来像这样:
C:\Windows\System32\schtasks.exe /run /tn "Name of task"
唯一的缺点是我需要为每个用户创建一个单独的任务,但我认为它运行良好。
感谢大家。
答案4
Windows 没有 UNIX 中的“setuid”概念。实际上只有两种方法可以实现您想要的目的:
第一种选择是执行“以...身份运行”类型的方案,其中登录用户需要拥有提升用户的相应密码。另一种选择是编写一个以管理员权限运行的“辅助”服务(服务通常都是这样),然后该服务将为该用户授予该进程的提升权限。
我对第二种选择的细节有点模糊,但我以前在我曾经工作过的公司见过这种做法。