VC中设置打开文件的权限为管理员权限
2012-02-06 10:02
211 查看
设置当前进程的权限
属性——链接器——清单文件——UAC执行级别——asInvoker
BOOL CMainFrame::EnableDebugPrivilege(BOOL fEnable)
{
BOOL fOK = FALSE;
HANDLE hToken = NULL;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
fOK = (GetLastError() == ERROR_SUCCESS);
CloseHandle(hToken);
}
return fOK;
}
以下在 VS2005 中测试可行
一般应用程序需要管理员权限时,在XP下无需特殊限定,只要使用管理员登陆系统即可正常使用应用程序。win7下因为特有的UAC验证,所以应用程序开发需要进行特别的处理。处理过程如下:
1. 在应用程序源代码目录下创建 admin.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="Win7Privilege"
type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
其中红色部分请更改为相应内容:
Win7Privilege => 你的应用程序名,例如MyProcedure
Description of your application => 你的应用程序描述信息,例如this is MyProcedure
2. 在应用程序的属性——清单工具——“输入和输出”选项中,填写“附加清单文件”项为admin.manifest,点击“确定”。
3. 重新生成应用程序。
经过这样处理的应用程序,在Win7下的非管理员账户下运行时,会弹出一个提示框,提示用户该程序要求管理员权限,是否继续运行。用户选择否,则程序退出;用户选择是,则运行的程序被赋予管理员权限。
属性——链接器——清单文件——UAC执行级别——asInvoker
BOOL CMainFrame::EnableDebugPrivilege(BOOL fEnable)
{
BOOL fOK = FALSE;
HANDLE hToken = NULL;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
fOK = (GetLastError() == ERROR_SUCCESS);
CloseHandle(hToken);
}
return fOK;
}
以下在 VS2005 中测试可行
一般应用程序需要管理员权限时,在XP下无需特殊限定,只要使用管理员登陆系统即可正常使用应用程序。win7下因为特有的UAC验证,所以应用程序开发需要进行特别的处理。处理过程如下:
1. 在应用程序源代码目录下创建 admin.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="Win7Privilege"
type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
其中红色部分请更改为相应内容:
Win7Privilege => 你的应用程序名,例如MyProcedure
Description of your application => 你的应用程序描述信息,例如this is MyProcedure
2. 在应用程序的属性——清单工具——“输入和输出”选项中,填写“附加清单文件”项为admin.manifest,点击“确定”。
3. 重新生成应用程序。
经过这样处理的应用程序,在Win7下的非管理员账户下运行时,会弹出一个提示框,提示用户该程序要求管理员权限,是否继续运行。用户选择否,则程序退出;用户选择是,则运行的程序被赋予管理员权限。
相关文章推荐
- VC中设置打开文件的权限为管理员权限
- win7设置打开文件的权限为管理员权限
- 通过试验探索Access 2000/XP 数据库的最佳 NTFS 权限设置Microsoft Jet 数据库引擎打不开文件'D:\wwwroot\test\data\'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。
- 在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限(转)
- HTTP could not register URL http://+:86/. 设置VS默认以管理员权限打开
- 在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限
- 在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限
- 在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限
- ubuntu以管理员权限打开文件(夹)
- 在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限 收藏
- VC++ MFC程序设置以管理员权限运行
- win7管理员权限设置方法-修改文件
- 公司员工没有管理员权限怎么办 C#文件夹、文件添加权限 C#读取windows系统日志 C#设置环境变量
- 公司员工没有管理员权限怎么办 C#文件夹、文件添加权限 C#读取windows系统日志 C#设置环境变量
- umask设置导致的weblogic中的应用上传的文件没有权限打开
- 取消win7管理员模式避免打开或删除文件提示需要管理员权限
- VS2010设置默认以管理员权限打开
- nagios 无法打开要更新的命令文件,外部命令文件或目录权限不对,参考FAQ设置正确的权限
- 【VC】设置工程属性,实现软件以管理员模式打开!
- 如何在VC中通过添加资源文件,使程序在Vista上用管理员权限运行