RemoteApp: เปิดโปรแกรมบัญชีผ่าน RDS ให้พนักงานใช้จากทุกที่
คำตอบสั้น ๆ: ตั้ง RemoteApp บน Windows Server ให้พนักงานเปิดโปรแกรมบัญชีจากเซิร์ฟเวอร์ผ่าน RD Web Access หรือไฟล์ .rdp พร้อมตั้งการพิมพ์ ไดรฟ์ และไลเซนส์ RDS ให้ครบ
คู่มือนี้อธิบาย RemoteApp ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
RemoteApp คือความสามารถของ Remote Desktop Services (RDS) บน Windows Server ที่ส่งเฉพาะหน้าต่างของโปรแกรมไปแสดงบนเครื่องผู้ใช้ แทนการส่งทั้งเดสก์ท็อป พนักงานดับเบิลคลิกไอคอนแล้วโปรแกรมบัญชีเปิดขึ้นมาเหมือนติดตั้งในเครื่องตัวเอง แต่ตัวโปรแกรม ฐานข้อมูล และไฟล์ทั้งหมดรันอยู่บนเซิร์ฟเวอร์ ข้อมูลจึงไม่กระจายไปอยู่ในโน้ตบุ๊กของแต่ละคน และทุกคนทำงานกับชุดข้อมูลเดียวกัน
คู่มือนี้เหมาะกับผู้ดูแลไอทีของบริษัทที่ใช้โปรแกรมบัญชีหรือโปรแกรมสำหรับ Windows ตัวอื่นที่ต้องให้หลายคนใช้งานพร้อมกันจากออฟฟิศและนอกสถานที่ เมื่อทำครบ คุณจะมี session collection ที่เผยแพร่โปรแกรมเป็น RemoteApp แล้ว ตั้งการพิมพ์และการเข้าถึงไดรฟ์ของเครื่องพนักงาน ตั้งไลเซนส์ RDS และแจกช่องทางเข้าใช้งานให้พนักงานได้ทั้งผ่านเว็บและไฟล์ .rdp
สิ่งที่ต้องเตรียม
Active Directory domain เพราะการติดตั้ง RDS แบบ deployment ผ่าน Server Manager ต้องใช้เครื่องที่ join domain แล้ว ถ้ายังไม่มี ดูคู่มือติดตั้ง Active Directory Domain Services
Windows Server 2019, 2022 หรือ 2025 ที่ join domain แล้ว สำหรับเป็น Session Host ในคู่มือนี้ใช้ชื่อ rds-01.corp.example.com และบัญชีที่อยู่ในกลุ่ม Domain Admins หรือ Administrators ของเครื่อง
RDS CAL ตามจำนวนผู้ใช้ และ License Server วิธีติดตั้งดูได้ในคู่มือ RDS Licensing ระหว่างทดสอบระบบใช้ช่วงผ่อนผัน 120 วันได้
คำยืนยันจากผู้ขายโปรแกรมบัญชีว่ารองรับการติดตั้งบน Remote Desktop Services และเงื่อนไขไลเซนส์ของโปรแกรมเมื่อใช้หลายคนบนเซิร์ฟเวอร์เดียว
ใบรับรอง TLS สำหรับชื่อที่พนักงานใช้ เช่น rds-01.corp.example.com และ rdg.example.com ถ้าพนักงานต้องใช้จากนอกออฟฟิศ
กลุ่มผู้ใช้ใน AD เช่น CORP\Accounting-Users ที่รวมพนักงานบัญชีทุกคนไว้
โปรแกรมและไฟล์ข้อมูลอยู่บนเซิร์ฟเวอร์ตลอด เครื่องพนักงานรับแค่ภาพหน้าจอของหน้าต่างโปรแกรม
ขั้นตอนที่ 1: ติดตั้ง Remote Desktop Services แบบ Session-based
ล็อกอินที่ rds-01 ด้วยบัญชีโดเมน เปิด Server Manager > Manage > Add Roles and Features ที่หน้า Installation Type เลือก Remote Desktop Services installation จากนั้นเลือก Deployment Type
Quick Start ติดตั้ง RD Connection Broker, RD Web Access และ RD Session Host บนเครื่องเดียว และสร้าง collection ตัวอย่างให้ เหมาะกับบริษัทที่มีผู้ใช้ไม่มากและเริ่มจากเซิร์ฟเวอร์เครื่องเดียว
Standard deployment เลือกได้ว่าบทบาทไหนอยู่เครื่องใด เหมาะเมื่อวางแผนขยายเป็นหลาย Session Host
ที่หน้า Deployment Scenario เลือก Session-based desktop deployment แล้วกดไปจนถึง Deploy เครื่องจะรีสตาร์ตระหว่างติดตั้ง ให้ล็อกอินกลับด้วยบัญชีเดิมเพื่อให้ตัวติดตั้งทำงานต่อจนเสร็จ ถ้าต้องการทำด้วย PowerShell ใช้คำสั่งนี้ ซึ่งรีสตาร์ตเครื่องเช่นกัน
New-RDSessionDeployment -ConnectionBroker rds-01.corp.example.com -WebAccessServer rds-01.corp.example.com -SessionHost rds-01.corp.example.com
เมื่อเสร็จ ใน Server Manager จะมีเมนู Remote Desktop Services ทางซ้าย หน้า Overview แสดงแผนผังบทบาทที่ติดตั้งแล้ว
ขั้นตอนที่ 2: สร้าง Session Collection สำหรับ RemoteApp และกำหนดกลุ่มผู้ใช้
collection คือกลุ่มของ Session Host ที่ให้บริการชุด RemoteApp เดียวกันกับผู้ใช้กลุ่มเดียวกัน ถ้าใช้ Quick Start ระบบสร้าง collection ตัวอย่างไว้แล้ว แต่ควรสร้างใหม่ให้ชื่อสื่อความหมาย ไปที่ Remote Desktop Services > Collections > TASKS > Create Session Collection ตั้งชื่อ Accounting เลือก rds-01 เป็น Session Host ที่หน้า User Groups ลบ Domain Users ออกแล้วเพิ่ม CORP\Accounting-Users แทน หรือใช้ PowerShell
New-RDSessionCollection -CollectionName Accounting -SessionHost rds-01.corp.example.com -ConnectionBroker rds-01.corp.example.com
Set-RDSessionCollectionConfiguration -CollectionName Accounting -UserGroup "CORP\Accounting-Users" -ConnectionBroker rds-01.corp.example.com
หน้า User Profile Disks ในตัวช่วยสร้างให้ข้ามไปก่อนถ้ามี Session Host เครื่องเดียว โปรไฟล์ผู้ใช้จะเก็บบนดิสก์ของเครื่องตามปกติ
ขั้นตอนที่ 3: ติดตั้งโปรแกรมบัญชีบน Session Host
โปรแกรมที่จะเผยแพร่เป็น RemoteApp ต้องติดตั้งบนทุก Session Host ใน collection และควรติดตั้งในโหมด install เพื่อให้ค่าตั้งต้นของโปรแกรมถูกเขียนสำหรับทุกผู้ใช้ เปิด Command Prompt แบบ Run as administrator
change user /install
D:\Setup\AccAppSetup.exe
change user /execute
อีกวิธีคือใช้ Control Panel > Programs > Install Application on Remote Desktop... ซึ่งสลับโหมดให้อัตโนมัติ ให้ติดตั้งโปรแกรมและเก็บไฟล์ข้อมูลไว้บนดิสก์ของเซิร์ฟเวอร์ เช่น D:\AccData แล้วกำหนดสิทธิ์ NTFS ให้กลุ่ม Accounting-Users แก้ไขได้ อย่าตั้งให้โปรแกรมอ่านข้อมูลจากไดรฟ์ที่ map มาจากเครื่องพนักงาน เพราะข้อมูลจะวิ่งผ่านอินเทอร์เน็ตและเสี่ยงไฟล์เสีย
ก่อนไปขั้นถัดไป ล็อกอินด้วยบัญชีผู้ใช้ทั่วไปหนึ่งบัญชี แล้วเปิดโปรแกรมผ่านเดสก์ท็อปตามปกติ ถ้าโปรแกรมต้องการสิทธิ์แอดมินทุกครั้งที่เปิด ปัญหานี้ต้องแก้กับผู้ขายโปรแกรมก่อน ไม่ควรให้พนักงานทุกคนเป็นแอดมินของเครื่อง
ขั้นตอนที่ 4: เผยแพร่โปรแกรมเป็น RemoteApp
ใน Server Manager ไปที่ Remote Desktop Services > Collections > Accounting ที่กล่อง REMOTEAPP PROGRAMS คลิก TASKS > Publish RemoteApp Programs ระบบจะแสดงโปรแกรมที่อยู่ใน Start menu ของ Session Host ติ๊กโปรแกรมบัญชี ถ้าไม่มีในรายการให้คลิก Add... แล้วเลือกไฟล์ .exe เอง จากนั้นกด Next และ Publish
เมนู Publish RemoteApp Programs อยู่ใน TASKS ของกล่อง REMOTEAPP PROGRAMS (ภาพจำลอง)
หลังเผยแพร่ คลิกขวาที่ RemoteApp แล้วเลือก Edit Properties เพื่อแก้ชื่อที่ผู้ใช้เห็น ตั้ง RemoteApp program folder สำหรับจัดกลุ่มไอคอน และใช้หน้า User Assignment จำกัดให้บางโปรแกรมเห็นได้เฉพาะบางกลุ่ม เช่น โปรแกรมเงินเดือนเฉพาะฝ่ายบุคคล ถ้าใช้ PowerShell ให้ระบุ Alias เองเพื่อให้ชื่ออ้างอิงคงที่
ระบุ Alias เองเสมอ เพราะไฟล์ .rdp และลิงก์ของผู้ใช้อ้างอิงชื่อนี้
ขั้นตอนที่ 5: ตั้งการพิมพ์ ไดรฟ์ และเวลาตัด session ของ RemoteApp
ค่าชุดนี้มีผลกับทุก RemoteApp ใน collection ไปที่ collection Accounting > กล่อง PROPERTIES > TASKS > Edit Properties แล้วตั้งค่าสามหน้า
Client Settings
ส่วน Enable redirection for the following เลือกเฉพาะที่จำเป็น Clipboard ช่วยให้คัดลอกตัวเลขจาก Excel ในเครื่องมาวางในโปรแกรมได้ Drives ทำให้หน้าต่าง Open และ Save ของโปรแกรมเห็นไดรฟ์ของเครื่องพนักงานในชื่อแบบ C on LAPTOP-01 ถ้าไม่ต้องการให้ข้อมูลบัญชีถูกบันทึกออกไปที่เครื่องส่วนตัว ให้ปิด Drives ไว้ ส่วน Printers ติ๊ก Windows printer , Use the client default printing device และ Use the Remote Desktop Easy Print print driver first เพื่อให้เครื่องพิมพ์ในเครื่องพนักงานใช้งานได้โดยไม่ต้องลงไดรเวอร์ทุกรุ่นบนเซิร์ฟเวอร์
Session
ตั้ง End a disconnected session เช่น 2 hours และ Idle session limit ตามนโยบายบริษัท session ที่ถูกทิ้งไว้ค้างจะล็อกไฟล์ข้อมูลบัญชีและกินไลเซนส์ผู้ใช้ของโปรแกรม การตัด session อัตโนมัติช่วยลดปัญหาคนอื่นเปิดไฟล์ไม่ได้ตอนเช้า
Security
คงค่า Allow connections only from computers running Remote Desktop with Network Level Authentication ไว้ ค่านี้บังคับให้ยืนยันตัวตนก่อนเริ่ม session
ตั้งค่าเดียวกันด้วย PowerShell ได้ดังนี้
$cb = "rds-01.corp.example.com"
Set-RDSessionCollectionConfiguration -CollectionName Accounting -ConnectionBroker $cb `
-ClientDeviceRedirectionOptions "Clipboard" -ClientPrinterRedirected $true `
-RDEasyPrintDriverEnabled $true -ClientPrinterAsDefault $true
Set-RDSessionCollectionConfiguration -CollectionName Accounting -ConnectionBroker $cb -DisconnectedSessionLimitMin 120
ค่าในหน้า Client Settings กับหน้า Session อยู่คนละชุดพารามิเตอร์ของคำสั่ง จึงต้องสั่งแยกเป็นสองบรรทัด
ขั้นตอนที่ 6: ตั้ง RD Licensing และใบรับรองของ deployment
ไปที่ Remote Desktop Services > Overview > กล่อง DEPLOYMENT OVERVIEW > TASKS > Edit Deployment Properties
หน้า RD Licensing เลือก Per User ให้ตรงกับชนิด CAL ที่ซื้อ แล้วเพิ่มชื่อ License Server ถ้าจะให้พนักงานใช้ RD Web client ผ่านเบราว์เซอร์ Microsoft กำหนดให้ใช้แบบ Per User
หน้า Certificates เลือกแต่ละ role service คือ RD Connection Broker - Enable Single Sign On, RD Connection Broker - Publishing, RD Web Access และ RD Gateway แล้วคลิก Select existing certificate เพื่อใช้ไฟล์ .pfx ที่เตรียมไว้ ช่อง Level ควรเป็น Trusted ทุกบรรทัด
หน้า RD Gateway ถ้ามี RD Gateway แล้ว ให้ใส่ชื่อ เช่น rdg.example.com และเลือก Bypass RD Gateway server for local addresses เพื่อให้พนักงานในออฟฟิศเชื่อมต่อตรง
Set-RDLicenseConfiguration -LicenseServer rds-01.corp.example.com -Mode PerUser -ConnectionBroker rds-01.corp.example.com
Get-RDLicenseConfiguration -ConnectionBroker rds-01.corp.example.com
ถ้าพนักงานต้องใช้จากนอกออฟฟิศ อย่าเปิดพอร์ต 3389 ของ Session Host ออกสู่อินเทอร์เน็ต ให้ตั้ง RD Gateway ตามคู่มือ RD Gateway แล้วเปิดเฉพาะพอร์ต 443
ขั้นตอนที่ 7: ให้พนักงานเปิด RemoteApp
พนักงานเปิด RemoteApp ได้สามช่องทาง เลือกตามความถนัดของแต่ละคน
RD Web Access เปิด https://rds-01.corp.example.com/RDWeb ล็อกอินด้วยบัญชีโดเมนในรูปแบบ CORP\somchai แล้วคลิกไอคอนโปรแกรม เบราว์เซอร์จะดาวน์โหลดไฟล์ .rdp ให้เปิดด้วย Remote Desktop Connection
RemoteApp and Desktop Connections บน Windows ไปที่ Control Panel > RemoteApp and Desktop Connections > Access RemoteApp and desktops ใส่ URL https://rds-01.corp.example.com/RDWeb/Feed/webfeed.aspx ไอคอนของ RemoteApp จะไปอยู่ใน Start menu ของพนักงาน เหมาะกับคนที่ไม่อยากเปิดเว็บทุกครั้ง
RD Web client ใช้งานในเบราว์เซอร์โดยไม่ต้องดาวน์โหลดไฟล์ ต้องมี RD Gateway และใบรับรองที่เชื่อถือได้ ติดตั้งตามเอกสาร Set up Remote Desktop web client ของ Microsoft แล้วพนักงานเข้าที่ https://rds-01.corp.example.com/RDWeb/webclient/index.html
ให้พนักงานคนแรกทดสอบเปิด RemoteApp พิมพ์เอกสาร และบันทึกงานจริงหนึ่งรอบ แล้วตรวจใน Server Manager ที่กล่อง CONNECTIONS ของ collection ว่าเห็นชื่อผู้ใช้และสถานะ Active
ปัญหาที่พนักงานแจ้งบ่อยที่สุดหลังเปิดใช้คือพิมพ์ไม่ออกและเปิดไฟล์จากเครื่องตัวเองไม่ได้
ปัญหาที่พบบ่อยเกี่ยวกับ RemoteApp
คลิก RemoteApp แล้วหน้าต่างขึ้นแวบเดียวแล้วปิดไป เกิดจากอะไร?
ส่วนใหญ่โปรแกรมเปิดไม่สำเร็จในบริบทของผู้ใช้คนนั้น เช่น ไม่มีสิทธิ์เขียนโฟลเดอร์ข้อมูล หรือโปรแกรมต้องการสิทธิ์แอดมิน ดู Application log ใน Event Viewer ของ Session Host ในช่วงเวลาที่ผู้ใช้เปิดโปรแกรม หรือให้แอดมินล็อกอินเดสก์ท็อปของเซิร์ฟเวอร์แล้วเปิดโปรแกรมในนามผู้ใช้คนนั้นเพื่อดูข้อความ error จริง ด้วยคำสั่ง runas /user:CORP\somchai "C:\Program Files (x86)\AccApp\AccApp.exe" จากนั้นแก้สิทธิ์ NTFS ของโฟลเดอร์ข้อมูลตามที่พบ
พิมพ์จาก RemoteApp แล้วไม่ออก หรือขนาดกระดาษเพี้ยน ต้องแก้อย่างไร?
RemoteApp ใช้เครื่องพิมพ์ของเครื่องพนักงานผ่านการ redirect ตรวจว่าเปิด Printers ใน Client Settings แล้ว และเครื่องพิมพ์ถูกตั้งเป็น default บนเครื่องพนักงาน ถ้าพิมพ์ผ่าน Easy Print แล้วฟอร์มหรือขนาดกระดาษเพี้ยน เช่น ฟอร์มต่อเนื่องของเครื่องพิมพ์หัวเข็ม ให้ติดตั้งไดรเวอร์รุ่นเดียวกันบนเซิร์ฟเวอร์ แล้วเอาเครื่องหมาย Use the Remote Desktop Easy Print print driver first ออก เพื่อให้ระบบใช้ไดรเวอร์จริงก่อน
ไม่มี Active Directory จะใช้ RemoteApp ได้หรือไม่?
การติดตั้ง RDS แบบ deployment ผ่าน Server Manager ที่คู่มือนี้ใช้ ต้องมีโดเมน ถ้าบริษัทมีผู้ใช้ไม่กี่คนและไม่มีโดเมน ทางเลือกที่ดูแลง่ายกว่าคือให้พนักงานเข้าแบบเดสก์ท็อปเต็มผ่าน RDP ตามจำนวน session ที่ไลเซนส์อนุญาต หรือสร้างโดเมนขนาดเล็กบนเซิร์ฟเวอร์แยกก่อนแล้วค่อยทำ RemoteApp
เพิ่มพนักงานใหม่ต้องทำอะไรบ้างให้ใช้ RemoteApp ได้?
เพิ่มบัญชีเข้ากลุ่ม CORP\Accounting-Users ตรวจว่ามี RDS CAL เหลือ และไลเซนส์ของโปรแกรมบัญชีรองรับจำนวนผู้ใช้ที่เพิ่ม พนักงานล็อกอิน RD Web Access ครั้งแรกจะเห็นไอคอน RemoteApp ทันที ไม่ต้องแก้ค่าใน collection
ถ้าต้องการให้ช่วยประเมินขนาดเซิร์ฟเวอร์สำหรับจำนวนพนักงาน หรือวางระบบ RemoteApp ทั้งชุด ติดต่อทีมงาน THAI DATA CLOUD ได้ ดูรายละเอียดเซิร์ฟเวอร์สำหรับงานนี้ได้ที่ Cloud Remote Desktop
อ่านเพิ่มเติมเกี่ยวกับ RemoteApp