MFC中提升至管理员权限

MFC中提升至管理员权限,第1张

你好,很高兴为你解答:

用以下办法,给应用程序添加一个manifest文件,程序运行时系统就会跳出UAC对话框,获得管理权限

1.打开应用程序的源代码工程

2.添加一个“custom”资源,"resource type"填24,把资源ID改为1,然后把以下内容复制到资源内容中保存

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity

version="1.0.0.0"

processorArchitecture="X86"

name="mulitray.exe.manifest"

type="win32"

/>

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">

<security>

<requestedPrivileges>

<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>

</requestedPrivileges>

</security>

</trustInfo>

</assembly>

3.重新编译应用程序,此时会发现,应用程序的图标在Vista下会多出一个小盾标志。

注:requestedExecutionLevel可以指定为三个值:

asInvoker:默认选项,新的进程将简单地继承其父进程的访问令牌。

highestAvailable:应用程序会选择该用户允许范围内尽可能宽松的安全上下文。对于标准用户来说,该选项与asInvoker一样,而对于管理员来说,这就意味着请求非限制访问令牌。

requireAdministrator:应用程序需要管理员的非限制访问令牌。运行该程序时,标准用户将要输入管理员的用户名和密码,而管理原则要在d出的确认对话框中进行确认。

------解决方案--------------------

runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"

------解决方案--------------------

通过manifest文件使VC应用程序获得管理员权限

http://hi.baidu.com/crowreturns/blog/item/f5e7cefd7546a284b801a07e.html

------解决方案--------------------

起名为setup,win7会自己提升权限,增加manifest文件。还有一种方法是改注册表。HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

添加一个字符串值 名称就是你的程序的路径和名字。值为 RUNASADMIN。 这样就可以了,如果程序想自动运行直接写成服务是最好的,什么提示也不会有的。

我理解的提升权限是指的是从Windows

Vista开始的UAC代入的特性对吧?

提升权限微软只提供了两个方法:

1.

exe的文件名为setup.exe, *** 作系统能够自动提升权限,会提示用户;

2.

第二个办法是在程序的manifest文件中指定权限。指定了管理员权限的程序会在资源管理器程序图标上加上盾牌图标,若用户没有禁用UAC,启动程序的时候 *** 作系统会向用户发出请求权限的提示。

你要清楚的是你不要打绕开UAC提升权限的想法,这是不可能的。

另外,微软没有提供提升权限的API。

微软提供了专门的教程:http://msdn.microsoft.com/en-us/library/bb756973.aspx

一共是9步,但是前面5步和后面3步都是废话,最重要的是第六步:

http://msdn.microsoft.com/en-us/library/bb756929.aspx


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11785315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存