小碼哥

          誰謂河廣,一葦杭之

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            7 隨筆 :: 17 文章 :: 74 評論 :: 0 Trackbacks

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          訂閱Canvas

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          辦公室通過路由器上網,所以不能直接遠程桌面登錄到自己計算機上,辦公室的人都想在宿舍登錄到自己的計算機上工作學習,所以可以簡單的將路由器的3389端口(windows遠程桌面默認使用3389端口)映射到自己的IP上,同時修改其他人計算機的遠程桌面端口,然后再相應的將路由器端口映射到自己的IP上即可。
          修改遠程桌面端口需要修改注冊表中的兩個值:
          [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
          "PortNumber"=dword:00000d3d

          [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]
          "PortNumber"=dword:00000d3d

          修改兩個值,十進制是0-65535,雙字十六進制是0x00000000-0x0000FFFF,推薦修改為1024以上。

          如何使用windows api編寫一個小程序來修改端口呢?接下來就詳細的講講這個程序應該如何實現,另外在討論一下如何使用windows api編寫簡單的windows程序。

          下載開源的windows api集成開發環境Code::Blocks (訪問Code::Blocks主頁)
          建議下載集成mingw的CodeBlocks,這樣就不用單獨下載安裝mingw了,如果不知道什么是mingw,趕緊google一下看看吧。配置好開發環境后,就可以開始下一步啦。

          啟動Code::Blocks,然后新建一個Win32 GUI Project,這樣IDE會自動構建一個對話框,而且程序的基本結構也就構造好了。程序的入口就是WinMain函數,然后就可以在這個基礎之上編寫我們的程序了。

          先確定這個程序有幾個窗口,然后修改resource.rc文件,資料都可以去MSDN查找
          resource.rc

          resource.rc文件很簡單,包括兩個對話框,同時對話框里包括了一些簡單的控件。

          修改resource.h文件,在其中添加一些控件的預定義
          resource.h

          編寫一些簡單的工具函數,主要實現2進制、10進制和16進制之間的相互轉換,和一些輸入的校驗。這個程序做的不是很完善,沒有校驗一些輸入數據。

          這里是utils.h文件(H代表16進制,D代表10進制,B代表2進制)
          utils.h

          這里是utils.c文件
          utils.c

          最后是主程序main.c

          main.c


          關于使用windows api操作注冊表需要注意的是:

          1.先打開注冊表,獲得注冊表的句柄,代碼為:
          1 //打開注冊表
          2             RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\Wds\\rdpwd\\Tds\\tcp",0,KEY_ALL_ACCESS,&wds);
          3             RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp",0,KEY_ALL_ACCESS,&winstations);


          2.然后在讀入注冊表的值或是寫入注冊表的值

          例如讀取PortNumber的值到變量value中:

           //讀取注冊表的值
                      DWORD value = 0;
                      DWORD dwType 
          = REG_DWORD;
                      DWORD dwSize 
          = sizeof(DWORD);
                      RegQueryValueEx(wds,
          "PortNumber",NULL,&dwType,(LPBYTE)&value, &dwSize);


          例如寫值到PortNumber中:

          int port = 3389



          RegSetValueEx(wds,
          "PortNumber",0,REG_DWORD,(LPBYTE)&port, sizeof(DWORD)) 

           

          這里是最終程序的截圖,[下載這個程序]

           

          posted on 2008-12-02 18:24 小碼哥 閱讀(2690) 評論(0)  編輯  收藏 所屬分類: windows apiC語言

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 育儿| 牟定县| 武义县| 永胜县| 定陶县| 错那县| 广灵县| 衡东县| 陕西省| 兴安盟| 北安市| 黔江区| 延川县| 牙克石市| 修水县| 许昌县| 临沂市| 鹰潭市| 杭锦后旗| 沽源县| 永年县| 南宫市| 米易县| 潜山县| 温州市| 永德县| 金门县| 镇远县| 鸡东县| 壶关县| 大邑县| 陇南市| 应城市| 延安市| 霍城县| 工布江达县| 贺兰县| 和硕县| 和静县| 泽库县| 通化县|