VBS和UAC用户帐户控制实现代码

虽然很多人觉得这个功能很鸡肋,但是以VBS的角度来看,UAC还是多多少少有点用的。在UAC的限制下,直接双击VBS文件只能在标准用户权限下运行,很多事情是做不了的,比如复制自身到windows文件夹,或者写入注册表的开机启动项等等。在XP下非常猖獗的暴风一号病毒,放到Win7下也就只能改改文件夹属性为隐藏罢了,其他什么都做不了。当然了,一些不明真相的同学喜欢把UAC功能关掉,然后装个叫什么359还是361的所谓安全软件。我也不好多说什么,不然会遭到围观的。

双击VBS文件系统不会自动弹出UAC窗口是一个很大的问题,因为这大大限制了VBS的功能,很多事情都做不了,怎么解决呢?请看下面的代码


代码如下:

For Each objOS in GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
If InStr(objOS.Caption,"XP") = 0 Then
If WScript.Arguments.length = 0 Then
Dim objShell
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
Call Main()
End If
Else
Call Main()
End If
Next

Sub Main()
MsgBox "UAC demon"
End Sub

这是我根据这个网站的代码改写的,判断系统版本,如果是XP(普通用户一般都是XP,如果是2003的话请自己改写)则直接运行代码,否则调用Shell.Application对象的ShellExecute方法,以管理员权限运行脚本。这样,我们的VBS程序在Vista/Win7系统下也可以像在XP系统那样为所欲为了。
原文:http://demon.tw/programming/vbs-uac-elevation.html

(0)

相关推荐

  • VBS和UAC用户帐户控制实现代码

    虽然很多人觉得这个功能很鸡肋,但是以VBS的角度来看,UAC还是多多少少有点用的.在UAC的限制下,直接双击VBS文件只能在标准用户权限下运行,很多事情是做不了的,比如复制自身到windows文件夹,或者写入注册表的开机启动项等等.在XP下非常猖獗的暴风一号病毒,放到Win7下也就只能改改文件夹属性为隐藏罢了,其他什么都做不了.当然了,一些不明真相的同学喜欢把UAC功能关掉,然后装个叫什么359还是361的所谓安全软件.我也不好多说什么,不然会遭到围观的. 双击VBS文件系统不会自动弹出UAC窗

  • 如何修复受损的Windows XP用户帐户很不错

    大家都知道,Windows XP 相比其它版本的 Windows 而言提供了 Windows 欢迎屏幕登录方式和快速用户切换的功能,为我们实现多人使用一台计算机提供了方便.正是因为如此,Windows XP 控制面板中的"用户帐户"也与其它版本的 Windows 有所不同,我们可以通过它选择是否启用欢迎屏幕.是否启用快速用户切换,以及为用户帐户设置头像等等. 然而,Windows XP 的"用户帐户"的主界面是一个基于 HTML 界面的程序,例如"用户帐户

  • Linux管理员手册(7)--管理用户帐户

    本章解释如何产生新用户帐户,如何修改帐户的属性,如何删除帐户.不同的Linux系统有不同的工具实现. 什么是帐户? 当一台计算机为多人所用时,通常需要区分用户,例如,使个人文件保持个人化.即使计算机同时只为一人所用,这也很重要,如多数微机. 因此,每个用户给定一个单独的用户名,这个名字被用于登录. 用户除了名字还有更多.一个帐户是所有的文件.资源和属于这个用户的信息.这个属于暗示是银行,在一个商业系统中,每个帐户通常与一些钱有关,且这些钱依赖于用户使用系统的多少以不同的速度被花掉.例如,磁盘空间

  • Linux 中锁定和解锁用户帐户的三种方法

    如果你已经在你的组织中实施了某种密码策略,你无需看这篇文章了.但是在这种情况下,如果你给账户设置了 24 小时的锁定期,你需要手动解锁用户帐户. 本教程将帮助你在 Linux 中手动锁定和解锁用户帐户. 这可以通过三种方式使用以下两个 Linux 命令来完成. passwd usermod 为了说明这一点,我们选择 daygeek 用户帐户.让我们看看,怎么一步步来实现的. 请注意,你必须使用你需要锁定或解锁的用户的帐户,而不是我们的帐户.你可以使用 id 命令检查给定的用户帐户在系统中是否可用

  • 实现让易语言编译的32位程序在64位Windows7系统非管理员帐户中执行

    昨天有易语言开发者向我求助,说他用易语言编译的32位程序软件,发布给64位操作系统Win 7用户使用,因为该用户确定没有管理员权限,而程序启动时又要求必须输入管理员密码,如此陷入困境. 目标企业用户管理严格,要求为普通用户分配管理员权限是不切实际的,只能开发人员从软件开发的角度在技术上解决. 我听到这个问题后,第一感觉是微软用户帐户控制(UAC)引发的,估计通过给 exe 添加特定的 manifest 资源应该可以解决.于是我给了他一段代码,让他用 ResHacker 之类的软件添加到软件里面去

  • 浅析Linux操作系统登录帐户的管理和审计

    1.登录帐户管理 在Linux下登录用户帐户的管理是通过utmp和wtmp这两个工具来实现的.wtmp还记录系统重启和系统状态变化的有关信息.所有与utmp和wtmp相关的数据都分别被保存在/var/run/utmp和/var/log/wtmp这两个文件中.这两个文件均归属于root用户所有并且访问权限被设置为644,这些文件中的数据是加密过的.可以用dump-utmp这个工具将原始的数据转换为ASCII的数据,便于系统管理员分析用户的登录以及系统重启和系统状态变化的有关信息. 登录帐户管理的相

  • 解析Windows中的帐户和权限功能

    上个月家里买了一台电脑,家人立刻都迷上了这东西.老爸在网上看新闻,跟网友侃足球:老妈用电脑在联众挖坑:妹妹则在电脑里写日记,顺便练习自己在学校学的Word等办公软件的基本操作方法.不过现在问题出来了,老爸和妹妹在网上看到好看的网页都会添加到收藏夹中,时间一长两人为了在收藏夹中找到自己的收藏都要花不少时间:老妈则在抱怨妹妹给电脑中装了太多软件,桌面上堆满了快捷方式,害她想上联众都要在众多的快捷方式中找半天:而妹妹则抱怨爸妈可能趁她不在的时候偷看她的日记.家人要我给想办法解决一下这些问题,在使用Wi

  • 用vbs确定用户的登录名的代码

    问: 您好,脚本专家!如何确定名为 John Smith 的用户的用户登录名? -- FR 答: 您好,FR.您知道,我们很愿意告诉您如何确定名为 John Smith 的用户的用户登录名,但是我们不能这样做:因为在我们的某个样例脚本中有一个特定的姓名列表,表示我们只能引用的用户名.遗憾的是,John Smith 不在该列表中,因此我们不能使用他的名字. 是的,对此我们也觉得不舒服,但是我们无能为力.但是要告诉您的是:向您介绍一个确定名为 Ken Myer 的用户的用户登录名的脚本怎么样?是的,

  • Windows域帐户的好处 域控制器的优点介绍

    尤其是我在刚进入公司时第一项任务便是研究TFS.SharePoint.SQL Server如何配置及管理,域帐户的用处一次次让我产生不小的震撼,有时是思想上的颠覆,我真的被他折服了.如果没有域帐户这些工作可真是不知道要麻烦多少.使用一段时间后发现我所感受及用到的: 域帐户可以在任意一台已经加入域的电脑上登录. 将域用户组加入到SQL Server登录里,域用户组内所有人员便都可以使用域用户登录数据库,继承相关权限. 域用户登录Team Foundation Server.SharePoint等都

  • 用C#在本地创建一个Windows帐户(DOS命令)

    其它方法见.用C#在本地创建一个Windows帐户(DirectoryServices) http://yaosansi.com/blog/article.asp?id=917 在WinForm下该程序可写成:   (已测试通过,需要以Administrator身份运行) using   System; namespace   eg { class     test { static     void     Main() { //声明一个程序信息类 System.Diagnostics.Pro

随机推荐