MFC中提升至管理员权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中提升至管理员权限相关的知识,希望对你有一定的参考价值。

void CIniAPIDlg::OnButton1()

CString strName,strTemp;
int nAge;
strName="张三";
nAge=12;
::WritePrivateProfileString("info","Name",strName,"C:\\student.ini");
strTemp.Format("%d",nAge);
::WritePrivateProfileString("info","Age",strTemp,"C:\\student.ini");
}这是MFC的一个按钮事件,作用是在c盘下创建ini文件,如果不用管理员身份启动exe的话是无法创建文件的。如何提升权限?同学说有一个函数可以,我不清楚,特此询问

你好,很高兴为你解答:
用以下办法,给应用程序添加一个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:应用程序需要管理员的非限制访问令牌。运行该程序时,标准用户将要输入管理员的用户名和密码,而管理原则要在弹出的确认对话框中进行确认。
参考技术A 首先,创建一个文件命名为 ***.manifest 然后将以下内容复制到文件<?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>最后将这个文件导入到工程的资源中,并将资源ID定义为1

Qt Creator开发的程序提升到管理员权限运行

一些功能需要管理员权限,例如启动一个服务,这就需要exe在管理员权限下运行,一个方法是在exe上右键,选择“以管理员身份运行”,或者右键-属性-兼容性-勾选“以管理员身份运行此程序”

另一个方法是在程序中搞定。

 

在项目的.pro文件中添加

QMAKE_LFLAGS += /MANIFESTUAC:"level=‘requireAdministrator‘uiAccess=‘false‘"

此时点击Run,会提示“启动程序失败,路径或者权限错误?”
可以尝试使用管理员身份启动Qt Creator,我尝试了,还是有问题

以上是关于MFC中提升至管理员权限的主要内容,如果未能解决你的问题,请参考以下文章

如何提升WINDOWS XP管理权限

Kali Linux 秘籍 第七章 权限提升

MFC 应用程序只能在管理员模式下最大化

怎样提升Windows7的用户权限?

如何提升windows7的权限

MFC怎么设置不同用户的不同用户权限,下面的情况具体要怎么做