用以下办法,给应用程序添加一个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。 这样就可以了,如果程序想自动运行直接写成服务是最好的,什么提示也不会有的。
我理解的提升权限是指的是从WindowsVista开始的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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)