我们即将推出数百台运行Windows 7 x64的新机器,并通过WDS安装操作系统,因此目前我们可以对其进行更改并将其准备到系统中。
问题是我们多年前写的一个.NET应用程序,它自己产生了一个修改的命令shell程序。 该shell运行DataFlex (DataFlex 3.2 dfruncon)应用程序,该应用程序本身需要使用提升的权限运行。
我们不授予用户任何一般pipe理员权限。
有没有一种机制,我们可以预先允许我们的.NET应用程序以pipe理员身份运行,以便命令控制以pipe理员身份运行?
我知道我可以在app.manifest文件中进行更改以要求程序以pipe理员身份运行。 我不知道我(作为pipe理员)如何configuration机器,使其不会让用户拥有比我想要的更多的权限和凭据。 有什么相当于CasPol让我指定一个给定的EXE文件可以以pipe理员身份运行吗? 如果不是的话,我究竟该怎么搞清楚用户需要使DataFlex的dfruncon运行的权限呢?
你可以做什么,是:
通过这种方式,用户可以使用pipe理员令牌运行特定的程序,但是不能使用其他pipe理员(如果用户尝试修改预定的任务,他们将无法应用没有pipe理员凭据的更改)。
在win7论坛中有一个相当详细的步骤指导: http : //www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html
更好的方法是确定自定义应用程序和Dataflex应用程序正在访问哪些资源,并将Authenticate Users权限授予这些资源。 您甚至可以通过使用组策略来授予访问权限。 这不是Dataflex特有的,这是每个应用程序都应该采取的方法。
资源通常是文件,文件夹和registry项。 不太经常的,它可能还需要做特殊的function,比如在内存中创build全局部分,这是一个可以通过组策略授予的Windows权限。
您可以确定使用SysInternals的进程监视器访问的资源。
如果您发现应用程序需要对某个文件夹的写入权限,并且该文件夹具有您希望用户没有写入权限的可执行文件,则一个技巧是从父文件夹取消对可执行文件的访问权限,并授予Authenticate Users只读取和执行这些文件。