Vista系统下快速提高管理员权限方法(精选3篇)
Vista系统下快速提高管理员权限方法 第1篇
我们可以同开始-> 所以程序-> 附件-〉命令提示符-〉右击然后以管理员身份运行,
这样是一开始的时候就必须以管理员身份运行的时候的方法!
如果我们真在工作中又必须提高管理权限,我们怎么才能实现呢?难道我们必须要防患于未然?
步骤如下:快速提高管理权限,
本文来自bianceng.cn(学电脑)
(1)win+r输入cmd。现在是普通权限运行dos。
(2)在“搜索”框中,键入 command prompt。
再看看是什么样子了
运行结果
Vista系统下快速提高管理员权限方法 第2篇
1 UIPI(User Interface Privilege Isolation)
用户界面特权隔离(User Interface Privilege Isolation,UIPI)是Vista以及Win7提供的系统安全功能,是帮助隔离在同一交互界面上以administrator权限运行的进程与非administrator权限运行进程的机制之一,通过定义一套分层次的用户界面特权级别来实现UIPI。这些特权级别具有高特权级别能向低特权级别的应用程序发送窗口消息,而低特权级别不能向该特权级别程序发送窗口消息的性质。
用户界面特权级别是进程级别的。当一个进程被初始化时,用户子系统要求进入安全子系统,以确认进程安全访问令牌中分配的Desktop诚信级别。当进程被创建时,Desktop诚信级别由安全子系统设置,次级别是固定不变的。因此当进程被创建时,用户界面特权级别也由用户子系统设置,并且保持不变。
所有以标准用户运行的应用程序具有相同的用户界面特权级别。UIPI不干涉或改变处于同一级别的应用程序间的窗口消息行为。当用户使管理员组的成员并以标准用户运行程序,以及在相同Desktop以Administrator权限运行程序的情况下,UIPI才生效。在Windows 7中,当UAC(User Account Control)启用的时候,UIPI的运行可以得到最明显的体现。
UIPI不允许低权限的进程给高权限的进程发送消息。而且低权限的进程并不会返回失败,高权限进程也不知道有进程给他发过消息,一切就这么静悄悄的消失了。简单的说,高权限下UIPI屏蔽了一些窗口消息。默认情况下,该安全特性会阻止低安全级别的进程向高安全级别的进程发送ID小于WM_USER的消息,因为这些消息不是用户自定义的。但是一些特殊Windows消息是被允许的,例如WM_MOVE、WM_SIZE等,因为这些消息对进程的安全性没有太大影响。对应这样的消息,即使尝试把它从UIPI的过滤列表中移除,应用程序还是会接收到这样的消息。
如何避免UIPI对应用程序兼容性带来的影响呢?
2 修改注册表项
如果我们将UIPI禁用,就不会受到UIPI的影响,可以避免应用程序兼容性的问题。通过修改注册表项HKEY_LOCAL_MA-CHINESOFTWAREMicrosoftWindowsCurrentVersion
policiessystem下的EnableUIPI节点,将该节点的值设置为0,这样就关闭了UIPI,应用程序可以正常接收由UIPI特性所屏蔽的消息。但是如果这样修改的话,所有的应用程序将都不受UIPI影响,这严重的违背了操作系统的安全性,也直接的影响到了其它的应用程序的安全性。因此我们应该在应用程序内部解决这个问题,缩小影响范围。
3 代码解决拖拽问题
UIPI特性将部分消息过滤,导致该问题发生,那么如果我们将WM_DROPFILES这个消息加入到UIPI的消息过滤器中,在administrator权限下运行应用程序,是不是就可以接收到这个消息呢?答案是肯定的。为了解决这个问题,Windows Vista引入了一个新的API函数ChangeWindowMessageFilter。利用这个函数,我们可以添加或者删除通过特权等级隔离的Windows消息。这就像拥有较高特权等级的进程,设置了一个过滤器,允许通过的Windows消息都被添加到这个过滤器的白名单,只有在这个白名单上的消息才允许传递进来。代码如下:
(UINT message,DWORD dwFlag);第一个参数用来设定Filter中添加或者删除的消息,第二个参数设定是添加(MSGFLT_ADD)还是删除(MSGFLT_REMOVE)消息。对于文件拖拽(Drag&Drop)消息,需要解除过滤的消息不仅仅是WM_DROPFILES这一个,还有一个MessageID为0x0049的消息。只有这两消息都添加到过滤器中,高权限下拖拽功能才可以正常使用。
4 结论
通过修改注册表键值的方法禁用UIPI,这个方案将UIPI完全屏蔽,对所有的应用程序产生影响,严重影响了系统的安全特性。在代码中通过ChangeWindowMessageFilter函数,将消息添加到Filter中的方法虽然也违背了UIPI的原则,但是在开发人员完全了解的情况下使用,对安全性的影响较小,并且在可控范围之内,建议使用。
摘要:目前很多应用程序允许用户从Windows窗口中拖拽文件到应用程序窗体中,进行显示(图片、视音频文件等)。在Vista和Win7系统中,当用户以administrator权限启动应用程序时,我们发现文件拖拽的操作被禁止了,用户无法将文件拖拽到应用程序的窗体中。该文从两个方面阐述了如何解决高权限下的拖拽问题,一是通过修改注册表,二是在代码中解决。
关键词:Vista,Win7,UIPI,拖拽,消息过滤
参考文献
[1]Mark Russinovich.Inside Windows Vista User Account Control[J].Microsoft TechNet Magazine,2007(6).
[2]http://msdn.microsoft.com/en-us/library/aa905330.aspx.
[3]http://msdn.microsoft.com/en-us/ms632675(VS.85).aspx.
Vista下提升应用程序权限 第3篇
1 UAC
UAC的全称是User Account Control(用户账户控制),它是Windows Vista提供的一个安全特性。它会在用户使用计算机进行更改系统设置或者安装软件等会影响到系统安全性、稳定性的操作时弹出一个对话框,友善的提示用户他们要进行的操作。
当用户使用Windows Vista时,默认是启用UAC的。当UAC启用时,无论用户以什么身份登录Vista系统,即使他以Administrator Group的身份登录计算机,都只具有普通用户的权限。当用户右键选择应用程序的“Run as Administrator”时,Vista系统会弹出一个对话框,提示用户他们要进行的操作。在这个过程中,如果您使用的是Administrator Group用户登录Windows Vista,那么只需要点击“Continue”或者“Allow”就可以继续进行操作了。如图1所示。
如果使用的是Standard用户登录,就需要输入Administrator或Group的密码,如图2所示。
点击的时候,UAC进行了一次权限的提升,这时Group用户才真正具有了Administrator的权限。如果是以Standard用户登录计算机,当他们执行这样的操作时,Vista会弹出一个对话框,让这个Standard用户输入一个管理员的账号和密码。如何才能让我们自己编写的程序在双击运行时就弹出这个对话框呢?
2 MAINFEST
dll是被动态调用的,所以会被若干个程序共享使用的但是如果dll在应用程序不知道的情况下升级了、或是被另一个程序更改了,就可能会出现问题。VS2005版本之后,采用了一种新的方案,即为每个dll文件配置一个Manifest文件,用来管理这些文件被动态调用时产生的问题。对于每个应用程序Application也有自己的Manifest文件。通过添加Manifest文件,可以使程序的图标上添加小盾牌,在双击运行时弹出对话框。Manifest是个XML的描述文件。为应用程序添加的Manifest文件如下。
level参数有三种:
1)asInvoker:应用程序将使用与启动它的进程相同的权限运行。可通过选择“以管理员身份运行”将应用程序提升为更高权限。
2)highestAvailable:应用程序将使用可能的最高权限级别运行。如果启动该应用程序的用户为管理员组的一个成员,则此选项与requireAdministrator相同。如果可用的最高权限级别高于打开进程的级别,则系统将提示提供凭据。
3)requireAdministrator:应用程序将使用管理员权限运行。启动该应用程序的用户必须是管理员组的一个成员。如果打开进程未使用管理权限运行,则系统将提示提供凭据。
在VS2005中使用Manifest文件的方法:将上述文件命名为TestUAC.manifest,置于启动工程的目录下,配置启动工程的工程属性,在Configuration Properties->
Manifest Tool->Input and Output->Additional Manifest Files配置项下添加文件名TestUAC.manifest。
在VS2008中,不需要该manifest文件,直接在启动工程的工程属性中设置即可。将Configuration Properties->Linker->Manifes File->UAC Execution Level配置项设置为如上三个参数中的一个即可。
3 存在的问题
如果在软件设计的过程中没有考虑低权限用户的问题,即将Manifest文件中level参数设置为asInvoker,即应用程序的权限与启动它的进程的权限相同,那么在低权限运行时就因为无法修改文件而导致App Error。将level参数改为requireAdministrator,双击运行的时候就可以弹出UAC提示信息,如图3所示。
通过UAC提升权限的方式,使用户真正具有了Administrator权限,可以任意修改位于受限目录下的文件。但是如果将UAC关闭,那么无论是否配置了Manifest文件,在运行时都不会弹出UAC提示信息,用户无法通过UAC提供的功能进行权限的提升,那么上面提到的问题就又出现了,即UAC关闭时,在应用程序运行过程中,低权限用户仍然无法修改由高权限用户所创建的文件。
4 代码提升访问权限
既然UAC关闭时,无法提供权限提升的功能,那么我们是不是可以从代码中来提升应用程序的权限呢?
Program Data是Vista下新增的目录,用来对用户数据进行分离,目的是保护Program Files目录下的文件不被用户随意的更改。当平台从XP升级到Vista后,在应用程序代码中,也可以将XP系统下创建在Program Files目录下的文件重定向到Vista系统的Program Data目录中,只要在高权限下创建的文件的属性具有everyone可访问的权限,那么在低权限访问高权限用户创建的文件时,就不会出现由于权限不足导致的App Error问题。代码中创建了一个具有everyone可访问权限的文件夹,文件夹中创建的文件自动继承了everyone可访问权限。
ConvertStringSecurityDescriptorToSecurityDescriptor这个函数在sddl.h文件中,使用时需要将该头文件包含,并且该函数在(_WIN32_WINNT>=0x0500)条件下定义,因此需要在该文件对应的头文件中进行#define_WIN32_WINNT 0x0500定义。这样我们就可以创建一个具有everyone访问权限的文件夹,在关闭UAC时,低权限用户访问高权限用户所创建的文件就不会因为没有权限而拒绝被访问。
5 结论
使用UAC来提升应用程序权限的方式是Vista提供的,能够真正意义上的进行权限的提升,使用该方法的前提是UAC必须是打开的,而且是在双击应用程序图标的时候会有一个提示框,用户需要知道Administrator或者Admin Group的密码才可以继续运行;而在代码中提升应用程序权限的本质是提升数据文件的访问权限,没有UI交互,用户不
需要了解高权限账号的密码即可正常运行,但这样又会违背Vista的安全特性。因此在使用时还需要慎重选择。
摘要:很多应用程序在运行的过程中,都会在系统盘下保存一些操作信息和修改的数据等信息。如果在Vista系统的不同权限的用户下运行这样的应用程序,会由于文件访问权限问题导致系统崩溃。本文从两个方面阐述了如何提升应用程序的访问权限,一是通过修改Manifest文件,二是在代码中提升。两个方法各有利弊,在使用时需要用户根据需要慎重选择。
关键词:Vista,Manifest文件,UAC,应用程序崩溃,提升访问权限
参考文献
[1]范文庆,周彬彬,安靖.精通Windows API[M].北京:人民邮电出版社.2009.
[2]MSDN Library for Visual Studio 2008-ENU[Z].