批处理文件写成C语言的困惑

learner5201314 2009-06-21 01:02:44
@echo off
echo Windows Registry Editor Version 5.00 >3389.reg
echo. >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] >>3389.reg
echo "fDenyTSConnections"=dword:00000000 >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] >>3389.reg
echo "PortNumber"=dword:00000d3d >>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] >>3389.reg
echo "PortNumber"=dword:00000d3d >>3389.reg
regedit /s 3389.reg
del /f /q 3389.reg

上面的代码另存为3389.bat就能运行了

但在VC++里编译时
#include "stdio.h"
#include "stdlib.h"
main()
{
system("@echo off");
system("echo Windows Registry Editor Version 5.00 >3389.reg");
system("echo. >>3389.reg");
system("echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] >>3389.reg");
system("echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg");
system("echo "PortNumber"=dword:00000d3d >>3389.reg");
system("regedit /s 3389.reg");
system("del /f /q 3389.reg");
}
就不行了,好像是转意符的问题,但又不知道怎么改,还望高指导!本人只是C语言爱好者,不是学程序的。。。
...全文
95 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
learner5201314 2009-07-02
  • 打赏
  • 举报
回复
哦,批处理呀,这个我知道……
风老二 2009-07-01
  • 打赏
  • 举报
回复
@
echo off
>nul
2>nul

以上都是
learner5201314 2009-07-01
  • 打赏
  • 举报
回复
请问什么叫屏蔽掉回显? 如何做到?
风老二 2009-07-01
  • 打赏
  • 举报
回复
你屏蔽掉回显就是了...
learner5201314 2009-06-30
  • 打赏
  • 举报
回复
知道reg可以,但别人可以查看,之所以写成C语言,就是不让人看见我写的是什么,呵呵!
风老二 2009-06-30
  • 打赏
  • 举报
回复
用reg命令,不用产生临时文件
learner5201314 2009-06-30
  • 打赏
  • 举报
回复
6楼的虽行,但删除了部分代码,所以达不到开启3389端口的效果,这样就完善了:
#include "stdio.h"
#include "stdlib.h"
main()
{
system("@echo off");
system("echo Windows Registry Editor Version 5.00 >3389.reg");
system("echo. >>3389.reg");
system("echo [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server] >>3389.reg");
system("echo \"fDenyTSConnections\"=dword:00000000 >>3389.reg");
system("echo [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\Wds\\rdpwd\\Tds\\tcp] >>3389.reg");
system("echo \"PortNumber\"=dword:00000d3d >>3389.reg");
system("echo [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp] >>3389.reg");
system("echo \"PortNumber\"=dword:00000d3d >>3389.reg");
system("regedit /s 3389.reg");
system("del /f /q 3389.reg");
}

longfein0328 2009-06-24
  • 打赏
  • 举报
回复
帮忙顶
learner5201314 2009-06-23
  • 打赏
  • 举报
回复
把\全部改成\\不行!
6楼的贴子可行!
谢谢了!
liao05050075 2009-06-21
  • 打赏
  • 举报
回复
双引号也要转义

#include "stdio.h"
#include "stdlib.h"
int main()
{
system("@echo off");
system("echo Windows Registry Editor Version 5.00 >3389.reg");
system("echo. >>3389.reg");
system("echo [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server] >>3389.reg");
system("echo [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\Wds\\rdpwd\\Tds\\tcp]>>3389.reg");
// system("echo \"PortNumber\"=dword:00000d3d >>3389.reg");
system("regedit /s 3389.reg");
system("del /f /q 3389.reg");
return 0;
}

飞天御剑流 2009-06-21
  • 打赏
  • 举报
回复
你把注册表中的\都改成\\就行了。


本人只是C语言爱好者,不是学程序的。。。
--------------------------------
这句话真逗....
liliangbao 2009-06-21
  • 打赏
  • 举报
回复
帮顶~
lingyin55 2009-06-21
  • 打赏
  • 举报
回复
楼主你直接在程序中调用3389.bat就行了。
喜欢嗑瓜子 2009-06-21
  • 打赏
  • 举报
回复
2楼的说的对。顶2楼
arong1234 2009-06-21
  • 打赏
  • 举报
回复
\自己是转义符,使得它后面得一个字符有另外得含义,因此\S会被合成一个字符(虽然\S是非法得转义序列,但是不会被当成一个\和一个S,反而会报错),因此对于\自己,必须用两个\\代替,如
system("echo [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server] >>3389.reg");

至于你这个特例,看不出写出C有什么好处,使用system调用来包装,还不如直接用bat呢

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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