新聞速報

        

2025年6月18日 星期三

使用遠端桌面, 如何把 本機的電腦 Com Port 對應 到 遠端電腦

使用遠端桌面, 如何把 本機的電腦  Com Port 對應 到 遠端電腦 ?

由於使用遠端的電腦進行程式開發,該程式有使用  Com Port 輸出資料

如何把 遠端電腦的 程式輸出 ( Com Port) 至 本機電腦的Com Port周邊硬體

PS: 遠端電腦 並沒有接上任何 Com Port周邊硬體


本機電腦的操作

1.開啟遠端桌面連線(mstsc.exe)

2.展開「顯示選項」

在遠端桌面視窗點選 「顯示選項(Show Options)」

3.切換到「本機資源」頁籤

選擇上方的 「本機資源(Local Resources)」

4.在「本機裝置和資源(Local devices and resources)」區塊下,按「其他(More...)





















5.「序列埠(Serial ports)」
這樣 RDP 會將 本機所有的 COM Port 對應(Redirect)到遠端電腦。
















在遠端電腦檢查 COM Port 是否對應成功

chgport 指令是一個與遠端桌面及 COM Port 對應有關的工具,但它的用途較為專門,用來查看或修改終端機會話的 COM 或 LPT 埠對應















遠端電腦 已經映射到 5 組 Com Port ( Com1、Com2、Com3、Com4、Com10)
PS: 這 5組 Com Port 是來自 本機電腦的 五組 Com Port




















PS: 遠端電腦 原始 Com Port 配置 (尚未經過 遠端桌面 映射前)





2025年3月24日 星期一

子網路遮罩表

 

子網路遮罩表

子網路遮罩: 255.255.255.0(0xffffff00) Subnet Bits: 24 Host Bits: 8

子網路個數: 1 每個子網路主機個數: 254

網路IP範圍廣播位址
.0.1-.254.255

子網路遮罩: 255.255.255.128(0xffffff80) Subnet Bits: 25 Host Bits: 7
子網路個數: 2 每個子網路主機個數: 126

網路IP範圍廣播位址
.0.1-.126.127
.128.129-.254.255

子網路遮罩: 255.255.255.192(0xffffffc0) Subnet Bits: 26 Host Bits: 6
子網路個數: 4 每個子網路主機個數: 62

網路IP範圍廣播位址
.0.1-.62.63
.64.65-.126.127
.128.129-.190.191
.192.193-.254.255

子網路遮罩: 255.255.255.224(0xffffffe0) Subnet Bits: 27 Host Bits: 5
子網路個數: 8 每個子網路主機個數: 30

網路IP範圍廣播位址
.0.1-.30.31
.32.33-.62.63
.64.65-.94.95
.96.97-.126.127
.128.129-.158.159
.160.161-.190.191
.192.193-.222.223
.224.225-.254.255

子網路遮罩: 255.255.255.240(0xfffffff0) Subnet Bits: 28 Host Bits: 4
子網路個數: 16 每個子網路主機個數: 14

網路IP範圍廣播位址
.0.1-.14.15
.16.17-.30.31
.32.33-.46.47
.48.49-.62.63
.64.65-.78.79
.80.81-.94.95
.96.97-.110.111
.112.113-.126.127
.128.129-.142.143
.144.145-.158.159
.160.161-.174.175
.176.177-.190.191
.192.193-.206.207
.208.209-.222.223
.224.225-.238.239
.240.241-.254.255

子網路遮罩: 255.255.255.248(0xfffffff8) Subnet Bits: 29 Host Bits: 3
子網路個數: 32 每個子網路主機個數: 6

網路IP範圍廣播位址網路IP範圍廣播位址
.0.1-.6.7.128.129-.134.135
.8.9-.14.15.136.137-.142.143
.16.17-.22.23.144.145-.150.151
.24.25-.30.31.152.153-.158.159
.32.33-.38.39.160.161-.166.167
.40.41-.46.47.168.169-.174.175
.48.49-.54.55.176.177-.182.183
.56.57-.62.63.184.185-.190.191
.64.65-.70.71.192.193-.198.199
.72.73-.78.79.200.201-.206.207
.80.81-.86.87.208.209-.214.215
.88.89-.94.95.216.217-.222.223
.96.97-.102.103.224.225-.230.231
.104.105-.110.111.232.233-.238.239
.112.113-.118.119.240.241-.246.247
.120.121-.126.127.248.249-.254.255

子網路遮罩: 255.255.255.252(0xfffffffc) Subnet Bits: 30 Host Bits: 2
子網路個數: 64 每個子網路主機個數: 2

網路IP範圍廣播位址網路IP範圍廣播位址
.0.1-.2.3.128.129-.130.131
.4.5-.6.7.132.133-.134.135
.8.9-.10.11.136.137-.138.139
.12.13-.14.15.140.141-.142.143
.16.17-.18.19.144.145-.146.147
.20.21-.22.23.148.149-.150.151
.24.25-.26.27.152.153-.154.155
.28.29-.30.31.156.157-.158.159
.32.33-.34.35.160.161-.162.163
.36.37-.38.39.164.165-.166.167
.40.41-.42.43.168.169-.170.171
.44.45-.46.47.172.173-.174.175
.48.49-.50.51.176.177-.178.179
.52.53-.54.55.180.181-.182.183
.56.57-.58.59.184.185-.186.187
.60.61-.62.63.188.189-.190.191
.64.65-.66.67.192.193-.194.195
.68.69-.70.71.196.197-.198.199
.72.73-.74.75.200.201-.202.203
.76.77-.78.79.204.205-.206.207
.80.81-.82.83.208.209-.210.211
.84.85-.86.87.212.213-.214.215
.88.89-.90.91.216.217-.218.219
.92.93-.94.95.220.221-.222.223
.96.97-.98.99.224.225-.226.227
.100.101-.102.103.228.229-.230.231
.104.105-.106.107.232.233-.234.235
.108.109-.110.111.236.237-.238.239
.112.113-.114.115.240.241-.242.243
.116.117-.118.119.244.245-.246.247
.120.121-.122.123.248.249-.250.251
.124.125-.126.127.252.253-.254.255

子網路遮罩: 255.255.255.255(0xffffffff) Subnet Bits: 32 Host Bits: 0
子網路個數: 255 每個子網路主機個數: 1

2025年3月17日 星期一

一句話

在我從事系統設計的工作中,我發現 MS 同樣糟糕。我覺得他們產品品質不佳導致我繼續受僱,所以也許我不應該抱怨太多,但我永遠不會推薦他們。


為其他人的成就感到高興,那才是真正的快樂。


窮人花時間省錢,富人花錢省時間。


尼采說,一個人知道自己為什麼而活,就可以忍受任何一種生活。


道歉並不難,若是做錯事或對不起人,道歉是種勇氣;
若沒有做錯事,而是為了大局著想,道歉是種智慧



我將思想傳授他人, 他人之所得,亦無損於我之所有;


猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson



「謝謝你」的心情,會穿過理所當然的冷漠和無言以對。



家裡是講愛、不是講理的地方!!


緣分就是品德
品德就是緣分
只要品德好,緣分也會好



所以 微罪不舉 是看人的。
有錢人、當官的,都微罪不舉。
遊民、死老百姓,一定勿枉勿縱。


《隱藏的大明星》沙克帝·庫馬爾:
「才華洋溢的人,就像水杯裡的泡泡,不管遇見怎樣的阻撓,都不會埋沒,終究會憑著自己的力量升上頂端 」


王小波說:「人的一切痛苦,本質上都是對自己無能的憤怒。」


我不是看到希望才堅持,我是堅持才看得希望


成功的三大要素:
堅持
不要臉
堅持不要臉

 

基本上只要是本土企業,賣台灣人比賣外國人貴的我都希望它倒....

為什麼要浪費時間和金錢和一間需要賣員工掙錢的公司打架? 


所謂理論,就是大家知道為什麼,但實際上行不通
所謂實務,就是沒有人知道為什麼,但實際上行得通
本公司已經完美結合了理論與實務:
什麼都行不通,而且沒有人知道為什麼

 

開發就像心跳, 沒有停止, 除非吾亡矣.



技術 是需要不斷的訓練,建立的絕對的信心
就會在 直覺 出現的那一刻,毫不猶豫的出手


小島製作試圖改變這種現狀。「小島製作不會成為那種要求人們奉獻生命的日本公司。我不計劃讓人們為我工作 20 年。有才能的人應該去闖蕩世界,創造自己名號下的東西。我想要促進這種事情的發生。」



別人罵你,你對他笑,反而會讓他更生氣,是最好的回擊。



成就……不是你得到了什麼,也不是物品上的價值,而是能再回到原地把曾經失敗無助的自己帶走!


依照傳統完成工作叫做 " 功夫 " , 創新工法降低成本稱為 " 技術 " , 若能兼顧安全 , 美觀 , 實用及未來性就可能到達 " 藝術 "


有social有差,人際關係跟工作能力一樣重要,員工沒出包前,大家都看人際關係,出包後再回過頭來看工作能力。


幸福,不是做自己喜歡的事,而是喜歡自己做的事


噴泉之所以漂亮,是因為它有了壓力;
瀑布之所以壯觀,是因為她它沒有了退路;
水之所以能穿石,是因為她它有了目標...



程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者,不可能以這樣的工時實現這樣的規格。
修改規格是對奇蹟吐槽的褻瀆行為。
而追加修改則是相信奇蹟還會重現的魯莽行動。



也許是藉由已讀與否來確認自己在別人心中的重要性、存在感;也許是想知道對方到底喜不喜歡我們;也許是我們自己無法忍受已讀帶來的不確定感......。但人生是長的,就算對方不重視我們,我們還是可以自己看開,轉身走掉或提升自己讓對方覺得我們不容小覷。

2025年2月12日 星期三

EPSON 微型印表機 低階控制

 EPSON 微型印表機  低階控制

採用 UDP : 3289

ENPC (UDP)

3289

指令格式為  15 Bytes

        out = ["EPSON",
                "Q",                    # PacketType (Q for query and C for command)
                "\x03",                # DeviceType(3) (fixed)
                "\x00",                # DeviceNumber(0) (fixed)
                "\x00\x10",         # Function(0010h)
                "\x00\x00",         # Result (fixed?)
                "\x00\x00",         # parameter length Length
                ""                       # command parameter
                ]


LanCard  ReSet



using System;
using System.Text;

 

class EpsonNetParser
{
    public static void Parse(byte[] buffer)
    {
        if (buffer.Length < 14) // 最小封包長度
        {
            Console.WriteLine("封包長度不足");
            return;
        }
 
        Console.WriteLine("EpsonNet Protocol Data:"); 
        // 取前 5 個字節作為 EPSON Header
        Console.WriteLine($"EPSON Header: {BitConverter.ToString(buffer, 0, 5)}");
 
        // 取得 Type(查詢/命令)
        char typeChar = (char)buffer[5];
        string ctype = char.IsLower(typeChar) ? "Reply" : "";
        string typeDescription = typeChar switch
        {
            'q' => "Query",
            'c' => "Command",
            's' => "_S_omething else",
            _ => $"Unknown Type ({typeChar})"
        };
        Console.WriteLine($"Type: {typeDescription} {ctype}");
 
        // 設備類型與設備編號
        Console.WriteLine($"Device Type: {buffer[6]}");
        Console.WriteLine($"Device Number: {buffer[7]}");
 
        // 解析 Function Number
        int functionNumber = BitConverter.ToUInt16(buffer, 8);
        string functionDescription = functionNumber switch
        {
            0x0000 => "Basic Information",
            0x0010 => "Status",
            0x0011 => "Forced Transmission",
            0x0012 => "Reset",
            0x0013 => "Buffer Flash",
            0x0016 => "Clearing Connection Timeout Timer",
            _ => "Unknown Function"
        };
        Console.WriteLine($"Function Number: {functionNumber} ({functionDescription})");
 
        // 結果代碼
        int resultCode = BitConverter.ToUInt16(buffer, 10);
        if (ctype == "")
        {
            Console.WriteLine($"(Fixed Value 0x0000) {resultCode}");
        }
        else
        {
            string resultDescription = resultCode switch
            {
                0x0000 => "Normal end",
                0xFFFE => "No device requested",
                0xFFFF => "Function not supported",
                _ => "Unknown result code"
            };
            Console.WriteLine($"Result Code: {resultCode} ({resultDescription})");
        }
 
        // 命令長度
        int commandLength = BitConverter.ToUInt16(buffer, 12);
        Console.WriteLine($"Command Length: {commandLength}");
 
        if (commandLength > 0 && buffer.Length >= 14 + commandLength)
        {
            string commandData = Encoding.ASCII.GetString(buffer, 14, commandLength);
            string dataType = ctype == "" ? "Command" : "Reply Data";
            Console.WriteLine($"{dataType}: {commandData}");
        }
    }
}

 

// 測試
class Program
{
    static void Main()
    {
        byte[] testPacket = new byte[]
        {
            0x45, 0x50, 0x53, 0x4E, 0x00, // EPSON Header
            0x71, // 'q' (Query)
            0x01, // Device Type
            0x02, // Device Number
            0x00, 0x10, // Function Number (0x10 = Status)
            0x00, 0x00, // Result Code (0x0000 = Normal)
            0x00, 0x05, // Command Length (5 bytes)
            0x48, 0x65, 0x6C, 0x6C, 0x6F // "Hello"
        };
        EpsonNetParser.Parse(testPacket);
    }
}

 

2024年8月30日 星期五

管理員權限的帳戶 與 內建的 Administrator 帳戶在某些方面存在差別

 在 Windows 10 中,新安裝作業系統後,第一個建立的使用者帳戶通常是一個具有管理員權限的本地使用者帳戶。


Windows 10 中使用者建立的具有管理員權限的帳戶 與 內建的 Administrator 帳戶在某些方面存在差別。



1. 帳戶名稱和身份:

使用者建立的管理員帳戶:這是在安裝 Windows 時建立的帳戶,您可以為其指定自訂名稱。雖然它具有管理員權限,但它是一個標準的使用者帳戶,只是被賦予了管理員的權限。

內建 Administrator 帳戶:這是 Windows 作業系統自帶的一個特殊管理員帳戶,具有最高權限。默認情況下,該帳戶通常是停用的。

2. 權限和控制:

使用者建立的管理員帳戶:雖然具有管理員權限,但在某些情況下,作業系統可能會要求通過“使用者帳戶控制 (UAC)”進行確認,或者需要額外的許可才能執行某些敏感操作。

內建 Administrator 帳戶:這個帳戶具有最高的權限,沒有使用者帳戶控制 (UAC) 的限制。使用此帳戶可以無障礙地進行系統範圍的更改和操作,但這也意味著潛在的風險更高,因為惡意軟體也可能利用這些權限。

3. 安全性和使用建議:

使用者建立的管理員帳戶:這是通常用於日常管理任務的帳戶,安全性較高,因為它受到 UAC 的保護,並且默認情況下權限相對受限。

內建 Administrator 帳戶:由於它的權限沒有任何限制,微軟建議僅在必要時啟用和使用此帳戶,並在任務完成後儘量將其停用以避免安全風險。

4. 默認狀態

使用者建立的管理員帳戶:在安裝完成後自動啟用,並且通常是使用者的主要帳戶。

內建 Administrator 帳戶:默認情況下是停用的,需要手動啟用。




總結:

雖然兩者都可以執行管理員等級的任務,但內建的 Administrator 帳戶有更高的權限和更少的限制,這使得它在某些情況下更強大,但同時也更容易帶來安全隱患。建議在日常使用中使用使用者建立的管理員帳戶,而將 Administrator 帳戶用於特殊的維護任務。

網路下載程式,執行時出現警告畫面

EXE、DLL 來自網路磁碟機或網站下載,即使包 ZIP 解開後仍會被標記檔案來自遠端電腦,存取使用上有額外限制(Zone Identifier) 

也稱為 NTFS Data Streams NTFS資料串流

在 Windows 10 中,當你從網路下載檔案時,作業系統會自動新增一個名為 Zone.Identifier 的“替代資料流” (ADS) 來標記該檔案的來源


檔案開啟、執行時會有下列警告畫面    
這個檔案來自另一台電腦,可能會封鎖以協助保護您的電腦。










若要 解除限制 
 (注意,這個畫面只會在點選單一檔案時才會出現,如果是選擇多個檔案的時候就不會出現。)







是誰把這個警告資訊在加入這個檔案的 ?

從 Internet 下載的檔案始終可能包含損壞的數據或惡意軟件。 因此,Internet 瀏覽器將有關檔案下載位置的資訊存儲在NTFS廣告(備用資料流程)區域中。 該資訊稱為“Zone.Identifier(區域識別字)”,由安全軟體使用。

目前 Windows  的檔案總管、IE 瀏覽器、Chrome 瀏覽器 都會有這個防範流程。
其中 經過 Windows 的檔案總管 下載 區網的NAS、FTP 也會對檔案進行 NTFS Data Streams NTFS資料串流  註記追加。



停用這個警告機制

方法一:編輯群組原則

之後再進入使用者設定 → 系統管理範本 → Windows元件 → 附件管理員

把選項【不要保留檔案附件的區域資訊】設為啟用即可






方法二:修改登錄檔

你可以通過修改登錄檔來實現同樣的效果:

按 Win + R,輸入 regedit 後按Enter,打開登錄檔編輯器。

到以下路徑:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments

在右側窗格中,檢查是否存在一個名為 “SaveZoneInformation” 的值。如果不存在,右鍵點選空白處,選擇 “新建” > “DWORD (32 位) 值”,並將其命名為 “SaveZoneInformation”。

連按兩下 “SaveZoneInformation”,將其數值資料設定為 1,然後點選 “確定”。


設定 SaveZoneInformation 為 1 可以停用從網路下載檔案時附加的 Zone.Identifier 資料流。
如果設定為 0,則會繼續保留這些資訊。





方法三:使用命令提示符刪除 Zone.Identifier

雖然以上方法可以阻止系統自動建立 Zone.Identifier,但如果你已經下載了帶有這個標記的檔案,可以手動刪除它:


打開 命令提示符。

使用 streams.exe 工具(Sysinternals 提供)來刪除檔案的 Zone.Identifier:

streams -d <檔案路徑>

使用這些方法,你可以停用或刪除下載檔案時自動新增的 Zone.Identifier。