我们正在我工作的大学广播电台安装一个数字媒体系统。我们试图让程序员(阅读;DJ,而不是程序员)访问音乐,不允许他们将任何音乐复制到他们的闪存驱动器或通过 Internet 传输。
我们在 Windows 系统上运行(客户端计算机为 Windows XP,媒体服务器为 Windows Server 2008)。我的想法是这样的。
- 创建一个根本无法访问数字媒体的用户 (ProgramUser)。
- 创建一个对程序员一无所知且不知道密码的数字媒体的只读访问权限的用户 (MediaUser)。
- 让用户以 ProgramUser 身份登录到 Windows,让他们根本无法访问媒体。
- 以 MediaUser 身份运行我们的播放应用程序 ( Traktor ),允许程序员播放媒体但不能复制或修改它。
这似乎是一个完美的解决方案,但有一个问题。如果播放应用程序或机器崩溃,程序员是唯一能够在合理的时间内让它再次运行的人(我们是一个 15 kW 的 FM 广播电台,所以停机时间很重要)。因此我的困境...
我怎样才能让程序员以他们不知道密码的用户身份启动我们的播放应用程序?
须藤.bat
令人惊讶的是,即使在重新启动或断电后,它也不会再次询问密码
在这些机器上禁用 USB 闪存驱动器、Internet 访问等。
我可以想到几种方法来解决这个问题。首先(也是更困难的)是编写一个启动 Traktor 的小型 Windows 服务。因此,ProgramUser 可以向服务请求一个新的 Traktor 实例,并且该服务作为 MediaUser 运行,因此 Traktor 作为 MediaUser 启动。
另一种可能性,也更容易,是设置一个启动快捷方式,在每次登录时启动 Traktor - Windows 快捷方式允许您在快捷方式属性中设置相应用户的凭据。如果计算机崩溃了,程序员只需要登录,他们就有一个新的 Traktor 作为 MediaUser 运行!
希望这些解决方案之一对您有用!
您可以为 DJ 创建一个启动 MediaUser 进程的程序。可以这样做,以便它将作为 ProgramUser 运行。
MediaUser 的密码/凭证需要编译到程序中,以便它知道密码,但最终用户永远不需要知道这一点。他们只有一个按钮或程序,上面写着“重新启动 Tracktor”,它可以完成所有工作。
这是该过程的 C# 示例。唯一的变化是对凭据进行硬编码,以便 DJ 看不到它们。
理想的情况是您将 Traktor 修改为作为服务运行,并使用单独的 GUI。这为您提供了最好的安全选项——Traktor 将以具有正确凭据的用户身份运行,没有人需要知道它们是什么,也不需要输入密码来重新启动它。事实上,如果它在服务管理单元中崩溃,您可以让它自行重启。
驱动 Traktor 的 GUI 然后被编写为用户自己运行的自己的应用程序,它将消息发送到 Traktor 服务(通过 TCP/IP、RPC、共享内存或任何其他形式的 IPC)以使其执行用户想要。如果您使用跨网络协议(例如 TCP/IP)使 GUI 工作,那么用户可以登录到她的工作站,并且 traktor 服务可以在更可靠的服务器上运行,可能会被锁定以防止“意外”重新启动。如果你很好,你可以编写一个 Web 应用程序来驱动 Traktor(也就是说,Web 服务器会将消息发送到该服务)并且你的用户可以在家中运行该站!
traktor 服务将与服务器一起启动,无需登录。
看看 Steel RunAs。在我的 SysAdmin 职业生涯中,当没有其他替代方案可行时,我已经将它用于多个脚本。这绝对是方便的。它生成一个可执行文件,在其中加密存储的凭据。 连锁