我可以修改 Windows 7 环境以允许 .NET 程序始终以管理员身份运行吗?

我可以修改 Windows 7 环境以允许 .NET 程序始终以管理员身份运行吗?

我们即将推出数百台运行 Windows 7 x64 的新机器,操作系统通过以下方式安装西门子数据系统所以目前我们可以做出改变,系统准备将它们纳入构建中。

问题在于我们几年前编写的一个 .NET 应用程序,它本身会生成一个经过修改的命令 shell。该 shell 运行一个数据弹性(DataFlex 3.2 dfrunco​​n)应用程序本身需要以提升的权限运行。

我们不授予用户任何一般管理员权限。

是否存在一种机制,我们可以预先允许我们的 .NET 应用程序以管理员身份运行,以便命令控制以管理员身份运行?

我知道我可以对文件进行更改,app.manifest以要求程序以管理员身份运行。我不知道如何(作为管理员)配置计算机以允许这种情况发生,而不会向用户授予比我希望他们拥有的更多的权限或凭据。有没有相当于卡斯波尔允许我指定给定的 EXE 文件可以以管理员身份运行?如果不行,我该如何确切地确定用户需要拥有哪些权限才能允许 DataFlex 的 dfrunco​​n 运行?

答案1

您可以做的是:

  1. 创建计划任务并将其配置为以管理员帐户提升的权限运行
  2. 将其安排为永不运行,然后从标准用户桌面放置一个运行该任务的快捷方式。

这样,用户可以使用管理员令牌运行特定程序,但不能运行其他程序(如果用户尝试修改计划任务,则在没有管理员凭据的情况下他们将无法应用更改)。

win7 论坛上有一个非常详细的分步指南:http://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

答案2

更好的方法是确定您的自定义应用程序和 Dataflex 应用程序正在访问哪些资源,并授予对这些资源的 Authenticate Users 权限。您甚至可以使用组策略授予访问权限。这并非 Dataflex 独有,这是应该采用的方法每一个应用。

这些资源通常是文件、文件夹和注册表项。较少情况下,它还可能需要执行特殊功能,例如在内存中创建全局部分,这是可以通过组策略授予的 Windows 权限。

您可以使用 SysInternals 的进程监视器确定访问的资源。

如果您发现某个应用程序需要对某个文件夹具有写权限,而该文件夹包含您不希望用户具有写权限的可执行文件,则有一个技巧就是取消从父文件夹继承的对可执行文件的访问权限,并仅授予“验证用户”对这些文件的“读取”和“执行”权限。

相关内容