在XP上需要pipe理员权限的旧版应用程序

我有一个传统的Windows 95应用程序需要以pipe理员身份运行。 这是学生在学校领域使用的。

我的前任为此设置了一个域pipe理员帐号,并启动了一个“Run As ..”批处理脚本来启动程序,但这仍需要老师input密码。 我想要一个更简单的方式让学生启动应用程序,而不必将更多的本地权限或密码提供给域pipe理员帐户。

什么是最好的方法来做到这一点?

我希望你的意思是你是一个在本地计算机pipe理员组中的用户,并且你不会给出一个属于域pipe理员的帐户。 绝对没有理由,该帐户应该是域pipe理员组的成员。 如果您已经向域pipe理员的老师发出了一个帐户,我强烈build议您尽快更改。 您应该在域中创build另一个组,并使该组成为计算机上本地pipe理员组的成员。 您应该能够使用由GPO应用的启动脚本将您创build的组添加到本地pipe理员组。

无论如何回到解决scheme的问题。 你可能需要做的是找出应用程序正在做什么需要pipe理访问,然后修改文件系统和registry的权限,以便学生有这些权限。

sysinternals工具filemon和regmon将会非常有用地解决这个问题。

如果您还没有,请尝试在Google上search关于该特定程序的信息,或许其他人已经解决了该问题并对其进行了修复。

我通常首先find软件使用的HKLM密钥 – 希望有一些理智的 – 并使用regedt32(注意常规registry不起作用),让他们完全控制该registry项。 然后我会给他们完全控制安装目录。 99%的时间解决了需要本地pipe理员的问题。 通常在这一点上,如果它不工作,我开始游说升级应用程序有时工作,有时它不。 如果你真的很幸运,这是一个普通的程序search谷歌会给你确切的地方,你需要授予作为非pipe理员运行的权限。

如果使用活动目录

  1. 导航到C:\ program files \ win 95应用程序文件夹。 在安全选项卡(属性)上给“域用户”读写权限。 我通常避免“完全控制”。

  2. 打开registry编辑器并导航到“LOCAL MACHINE \ SOFTWARE”并findwin 95应用程序。 在权限选项卡上给“域用户”读写权限。 同样,我也尝试避免“完全控制”。

  3. 这是一个不寻常的 – 然后运行应用程序一分钟,就好像你是其中一个用户(但以pipe理员login)打开一些屏幕等等。 然后closures应用程序,并打开Windowssearch。 search最近使用时间戳修改过的文件。 你可能会发现一些.ini程序员当时(win95)放在windows目录下。 我去他们的属性,并给予“域用户”“完全控制”….不在WINDOWS目录…只是该应用程序所属的文件。

这应该够了吧。 它多次为我工作。

看看非常好的Aaron Margosis开始的nonadmin网站。 当你在XP上推出有限的用户时,这是一个很好的资源。 一些想要以pipe理员身份运行的应用程序需要额外的调整,而不是已经给出的好的答案,以便能够以有限的用户身份运行。

前面提到的filemon和regmon工具已经合并到进程监视器中。 请在http://live.sysinternals.com/下查看procmon.exe

9倍于10,这只是写给HKLM \软件\供应商或C:\程序文件\供应商,但复杂的情况下,你会想学习过程监控,以及如何过滤到您正在跟踪的具体可执行文件开始关注写操作而不是阅读(否则你将有成千上万的条目)。

另一个select是使用Thinapp(VMWare),App-V(Microsoft)或SVS(Altiris / Symantec)等产品的应用程序虚拟化。 虽然我没有深入地使用Altiris,但我认为有一个免费的个人版本,可以让你testing它,并熟悉使用的方法。 Vista也有一个虚拟的registry和文件系统,但是我从来没有使用Vista来达到这个目的。

作为一个快速修复,你可能会发现运行应用程序作为Power Users本地组的成员将是足够的权限。 高级用户对几乎所有注册和本地文件系统都具有修改权限。 因此,如果应用程序作为高级用户运行,则可以通过编辑文件系统权限registry来使用普通用户。

如果将批处理脚本更改为使用PSExec(从Sysinternals)而不是“Run As”,则可以将密码embedded到脚本中,而不需要教师input密码。 我使用编码的VBScript为此目的。

'**Start Encode** Const SET_PRIVELEGE_CMD = "%comspec% /c psexec -i -u User -p Password " Set objWShell = CreateObject ("WScript.shell") objWShell.run SET_PRIVELEGE_CMD & "c:\MyApplication.exe" 

要编码一个vbscript文件,您需要在任何代码之前将“ 启动编码 ”文本作为注释放置在脚本中,还要从Microsoft下载并安装sce10en.exe 。 完成这些操作后,打开命令提示符,然后导航到安装编码软件的文件夹。

 Usage: screnc [/?] [/s] [/f] [/xl] [/l ScriptLanguage] [/e DefaultExtension] <source> <destination> Encode embedded script. /? - Help /s - Silent: display no messages /f - Force: allow file(s) overwrite (source == destination) /xl - Exclude Language: does not add the language directive in asp files /l ScriptLanguage - Script Default Language: specify the default script language to be used when encoding /e DefaultExtension - Default Extension: override actual file extension. Control the encoder to be loaded. <source> The file to encode. It can have wildcard characters. <destination> The destination file. When <source> contains wildcard characters, <destination> is the directory where to place the encoded files; files will keep the same name. When <source> and <destination> are the same /f must be used. Example: C:\Program Files\Windows Script Encoder>screnc C:\temp\MyScript.vbs C:\temp\MyScript.vbe 

请注意,这是编码encryption 。 知道自己在做什么的人可以轻松解码脚本以获取密码,从而使该解决scheme在某些设置中不可用。