开启远程终端失败 哪里有问题?

wulawulawa_ 2018-07-08 02:55:06

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

void CreateStringReg(HKEY hRoot,char* szSubKey,char* ValueName,char* Data){
HKEY hKey;
long lRet=RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
if(lRet!=ERROR_SUCCESS){
printf("error no aRegCreateKeyEx %s\n",szSubKey);
return ;
}
lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data));
if(lRet!=ERROR_SUCCESS){
printf("error no aRegCreateKeyEx %s\n",ValueName);
return ;
}
RegCloseKey(hKey);
}

void CreateDWORDReg(HKEY hRoot,char *szSubKey,char* ValueName,DWORD Data){
HKEY hKey;
long lRet=RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
if(lRet!=ERROR_SUCCESS){
printf("error no aRegCreateKeyEx %s\n",szSubKey);
return ;
}
DWORD dwSize=sizeof(DWORD);
lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)&Data,dwSize);
if(lRet!=ERROR_SUCCESS){
printf("error no aRegCreateKeyEx %s\n",ValueName);
return ;
}
RegCloseKey(hKey);
}

void Reboot(){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) return;
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);
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
}

int main(int argc, char** argv) {
DWORD Port=atoi(argv[1]);
CreateStringReg(HKEY_LOCAL_MACHINE,"SOFTWARE\\Policies\\Microsoft\\Windows\\CurrentVersion\\netcache","Enabled","0");
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SOFTWARE\\Policies\\Microsoft\\Windows\\Installer","EnableAdminTSRemote",0x00000001);
CreateStringReg(HKEY_LOCAL_MACHINE,"SOFTWARE\\Policies\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon","ShutdownWithoutLogon","0");
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Termianl Server","TSEnabled",0x00000001);
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\TermDD","Start",0x00000002);
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\TermService","Start",0x00000002);
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Termianl Server","fDenyTSConnections",0x00000001);
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Termianl Server\\RDPTcp","PortNumber",Port);
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Termianl Server\\WinStations\\RDP-Tcp","PortNumber",Port);
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Termianl Server\\Wds\\rdpwd\\Tds\\tcp","PortNumber",Port);
CreateStringReg(HKEY_USERS,".DEFAULT\\Keyboard Layout\\Toggle","HotKey","2");
CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Termianl Server","fDenyTSConnections",0x00000000);
OSVERSIONINFO osver={sizeof(OSVERSIONINFO)};
GetVersionEx(&osver);
if(osver.dwMajorVersion==5&&osver.dwMinorVersion==0){
Reboot();
}
return 0;
}


...全文
165 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wulawulawa_ 2018-07-08
  • 打赏
  • 举报
回复
引用 1 楼 ojc8882003 的回复:
只是改了注册表么?权限都有了?
什么权限?是看着书自学的,不太清楚
aabbabababaa 2018-07-08
  • 打赏
  • 举报
回复
只是改了注册表么?权限都有了?

18,124

社区成员

发帖
与我相关
我的任务
社区描述
Windows客户端使用相关问题交流社区
社区管理员
  • Windows客户端使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧