Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2087654
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:28:36

  在 vista引进的诸多性功能中,用户帐户控制(UAC)是最重要的功能之一。使用用户帐户控制,即便是管理员用户也使用标准特权来运行大多数应用程序,但是针对特定管理任务和应用程序功能具有“提升权限的可能”。

  在使用 Vista一段较长的时间后,根据需要来提升任务和应用程序的权限已渐成自然。不过,在Windows Vista中尝试提升某些类型的任务时,我也遇到许多不便之处,令人感到沮丧。

  因此,本着以前的Windows?PowerToys的精神,我创建了一些脚本提升PowerToy来克服这些限制。您可以在位于TechNet的代码中找到我将要讨论的所有PowerToy。您还可以参阅2006年11月AlexHeaton的文章“用'用户帐户控制'实现非管理员操作之梦”,了解UAC是如何工作的(请参阅“更多资源”侧栏)。

   Windows Vista的脚本提升PowerToy

  提升命令PowerToy

  第一件令人不快的事情是无法从命令行或“运行”对话框提升应用程序。因此在Microsoft内部进行了广泛咨询后,我从JohnStephens(Microsoft的软件设计工程师)那里得到了一个示例脚本,提供了我所需要的信息。事实上,如果您将动词“runas”传递给ShellExecuteAPI或其COM等效项(Shell.Application的ShellExecute方法),所启动的应用程序将提示进行提升(有关详细信息,请参阅侧栏)。这就允许我创建了第一个提升PowerToy—提升命令PowerToy。

  此工具(由ElevateCommand.inf、elevate.cmd和elevate.vbs文件组成)将向您的系统添加一个elevate命令。这允许您从命令行、脚本或“运行”对话框中启动提示进行提升的应用程序。例如,以下命令将用记事本打开Win.ini(在提示进行提升之后):

  elevatenotepadc:\Windows\Win.ini在WindowsScriptHost(WSH)、WindowsPowerShell?或其他脚本中使用elevate命令时,需要将脚本宿主可执行文件(如wscript、CScript或powershell)指定为该应用程序。例如,要运行vbs,您需要使用如下代码:

  elevatewscript“C:\windows\system32\slmgr.vbs”–dli帮助文本对此进行了解释。使用带-?参数或不带任何参数的elevate命令可查看帮助文本。

  以管理员身份运行脚本

  另一个不便之处是对于大多数Windows脚本类型,没有“以管理员身份运行”上下文菜单选项(当您在资源管理器中右键单击文件时)。命令外壳脚本(那些带有.bat和.cmd文件扩展名的文件)是一个例外。因此我开始对此进行调查。

  对于各种文件类型,许多上下文菜单选项都是通过注册表的HKEY_CLASSES_ROOT部分中的“object”类型的命令键控制的(有关详细信息,请参阅侧栏中的“动词和文件关联”)。事实是,如果该命令键名为runas,则所调用的命令将提示进行提升。这就使我可以创建以下PowerToy:

  提升HTML应用程序PowerToy(ElevateHTA.inf)

  提升WindowsPowerShell脚本PowerToy(ElevatePowerShellScript.inf)

  提升WSH脚本PowerToy(ElevateWSHScript.inf、elevate.cmd、elevate.vbs)

  这些PowerToy分别为HTA、WindowsPowerShell和Windows脚本宿主文件类型添加了一个“以管理员身份运行”资源管理器上下文菜单项(如图1所示)。

  ElevateWSHScript.inf还会添加一个“使用命令提示符以管理员身份运行”菜单项。(请在安装前阅读ElevatePowerShellScript.inf中的说明。)

发v

“以管理员身份运行”上下文菜单选项

[1]  

【责编:Yoyo】

--------------------next---------------------

阅读(325) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~