如题,望高手指导一下,小弟在此谢过..
网上有人说要改UAC权限,我试了下,好像没有,贴个代码大家看一下是什么问题
HANDLE ProcessHandle ;
DWORD DesiredAccess ;
HANDLE TokenHandle ; ProcessHandle = GetCurrentProcess() ;
DesiredAccess = TOKEN_WRITE ;
if (OpenProcessToken(ProcessHandle, DesiredAccess, &TokenHandle))
{
TOKEN_PRIVILEGES NewState ,PreviousState ;
LUID_AND_ATTRIBUTES LuidAtt ;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED ;
NewState.PrivilegeCount = 1 ;
if(LookupPrivilegeValue(NULL, SE_ASSIGNPRIMARYTOKEN_NAME,&NewState.Privileges[0].Luid))
{
DWORD ReturnLength ;
if (AdjustTokenPrivileges(TokenHandle,FALSE,&NewState,sizeof(NewState),NULL,NULL))
{
//修改 run 下边的注册表.....
}else
TRACE("AdjustTokenPrivileges %d\n", GetLastError()) ;
}else
TRACE("LookupPrivilegeValue%d\n", GetLastError()) ;
}
网上有人说要改UAC权限,我试了下,好像没有,贴个代码大家看一下是什么问题
HANDLE ProcessHandle ;
DWORD DesiredAccess ;
HANDLE TokenHandle ; ProcessHandle = GetCurrentProcess() ;
DesiredAccess = TOKEN_WRITE ;
if (OpenProcessToken(ProcessHandle, DesiredAccess, &TokenHandle))
{
TOKEN_PRIVILEGES NewState ,PreviousState ;
LUID_AND_ATTRIBUTES LuidAtt ;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED ;
NewState.PrivilegeCount = 1 ;
if(LookupPrivilegeValue(NULL, SE_ASSIGNPRIMARYTOKEN_NAME,&NewState.Privileges[0].Luid))
{
DWORD ReturnLength ;
if (AdjustTokenPrivileges(TokenHandle,FALSE,&NewState,sizeof(NewState),NULL,NULL))
{
//修改 run 下边的注册表.....
}else
TRACE("AdjustTokenPrivileges %d\n", GetLastError()) ;
}else
TRACE("LookupPrivilegeValue%d\n", GetLastError()) ;
}
DesiredAccess = TOKEN_WRITE,应该是
DesiredAccess = SE_PRIVILEGE_ENABLED ;自己顶一个....
应该没法在程序运行时提升UAC.不过你可以请求输入用户名密码来获得用户登入密码,然后创建一个新的安全标示符,提升本线程的权限或者创建高权限子线程来完成任务.