zoukankan      html  css  js  c++  java
  • 提升权限

    #include "stdafx.h"
    #include <stdio.h>
    #include <iomanip>
    #include <iostream>
    #include <Windows.h>
    using namespace std;
    
    //获取电脑管理员权限
    void GetPrivilege()
    {
    
    	HANDLE hToken;
    	TOKEN_PRIVILEGES tkp;
    	if(!OpenProcessToken(
    		GetCurrentProcess(),
    		TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
    		&hToken))
    		printf("OpenProcessToken failed");
    
    	LookupPrivilegeValue(NULL,
    		SE_SHUTDOWN_NAME,
    		&tkp.Privileges[0].Luid);
    	tkp.PrivilegeCount=1;
    	tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
    
    	AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
    	if(GetLastError()!=ERROR_SUCCESS)
    		printf("AdjustTokenPrivileges");
    }
    
    
    //打开注册表 RegOpenKeyEx
    //修改注册表的值 RegSetValueEx
    
    void AutoRun()
    {
    	HKEY hKey={0};
    	DWORD err=RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0,KEY_WRITE,&hKey);
    	if(err!=ERROR_SUCCESS)
    	{
    		cout<<"RegOPenKeyExW failed"<<endl;
    	}
    
    	char szPath[MAXBYTE]={0};
    	GetModuleFileNameA(NULL,szPath,MAXBYTE);
    	err=RegSetValueExA(hKey,"AutoRun",0,REG_SZ,(byte*)szPath,sizeof(szPath));
    	if(err!=ERROR_SUCCESS)
    	{
    		cout<<"RegSetValueEx failed"<<endl;
    	}
    }
    
    int _tmain(int argc, _TCHAR* argv[])    
    {
    	GetPrivilege();
    	cout<<"输入开机密码,否则关机重启"<<'
    '<<"密码:";
    	int nPassword=123;
    	cin>>nPassword;
    	AutoRun();
    	if(nPassword!=123)
    	{
    		ExitWindowsEx(EWX_SHUTDOWN,0);
    		//cout<<"我很帅气"<<endl;
    	}
    	system("pause");
    	return 0;
    }

    //进程提权

    BOOL ElevatePrivileges()
    {
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    tkp.PrivilegeCount = 1;
    if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
    return FALSE;
    LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid);
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    if(!AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),NULL,NULL))
    {
    return FALSE;
    }

    return TRUE;
    }





      

  • 相关阅读:
    MySQL内连接和外连接
    MySQL 重命名数据库
    linux查看文件大小
    Linux合并两个文件夹内容
    Linux压缩和解压命令
    深度学习反向求导
    深度学习网络压缩模型方法总结
    cuda培训素材
    cuda编程-卷积优化
    交叉熵代价函数(损失函数)及其求导推导
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/10963179.html
Copyright © 2011-2022 走看看