CServiceModule::Run

หลังจากถูกเรียกว่ารันครั้งแรกเก็บรหัสเธรดของบริการ บริการจะใช้ ID นี้เพื่อปิดตัวเอง โดยการส่งข้อความWM_QUITที่ใช้ฟังก์ชัน Win32 API, PostThreadMessage?

เรียกใช้แล้วเรียกใช้ฟังก์ชัน Win32 API, CoInitializeEx โดยค่าเริ่มต้นทำงานผ่านค่าสถานะCOINIT_MULTITHREADEDไปยังฟังก์ชัน ธงนี้บ่งชี้ว่า โปรแกรมจะเป็น เซิร์ฟเวอร์ฟรีแบบเธรด?

ขณะนี้ คุณสามารถระบุความปลอดภัยที่ใช้CSecurityDescriptor คลาสนี้เป็นอย่างมากช่วยงานของการตั้งค่า และเปลี่ยนแปลงรายการ discretionary-ควบคุมการเข้าถึง (DACL) — รายการของรายการควบคุมการเข้าถึง (ACEs), ซึ่งแต่ละหนึ่งกำหนดเข้าไปยังวัตถุ Win32?

โดยค่าเริ่มต้น AppWizard COM ATL สร้างการเรียกไปยังฟังก์ชันInitializeFromThreadTokenสมาชิกของCSecurityDescriptor งานนี้เตรียมใช้งานตัวบอกเกี่ยวกับความปลอดภัยของวัตถุไปเป็นค่า null DACL ซึ่งหมายความ ว่า ผู้ใช้สามารถเข้าถึงวัตถุของคุณ?

วิธีที่ง่ายที่สุดเมื่อต้องการเปลี่ยนผู้ใช้เข้าถึงถูกปฏิเสธและอนุญาตให้สมาชิกฟังก์ชันของCSecurityDescriptor ฟังก์ชันเหล่านี้เพิ่มหนึ่ง DACL ที่มีอยู่ อย่างไรก็ตามปฏิเสธเสมอจะมีความสำคัญเนื่องจากปฏิเสธเพิ่มหนึ่งไปยังจุดเริ่มต้นของ DACL ในขณะที่อนุญาตให้เพิ่มลงในส่วนท้าย ทั้งปฏิเสธและอนุญาตให้ส่งชื่อผู้ใช้เป็นพารามิเตอร์แรกและสิทธิการเข้าถึง (โดยปกติCOM_RIGHTS_EXECUTE) เป็นที่สอง?

เรียกคืนที่ DACL ค่า null ที่สร้างโดยInitializeFromThreadTokenให้ผู้ใช้ทุกคนเข้าถึงวัตถุ COM อย่างไรก็ตาม ทันทีที่คุณเรียกใช้การอนุญาตให้เพิ่มหนึ่ง เฉพาะที่ระบุผู้ใช้จะสามารถเข้าถึง รหัสต่อไปนี้แสดงการเรียกเพื่ออนุญาตให้:

CSecurityDescriptor sd
sdInitializeFromThreadToken ()

ถ้า (bAllowOneUser)
{
 nbsp sdอนุญาตให้ ("MYDOMAIN\\myuser", COM_RIGHTS_EXECUTE);
}
CoInitializeSecurity (sd, -1, NULL, NULL
                     RPC_C_AUTHN_LEVEL_PKT
                     RPC_C_IMP_LEVEL_IMPERSONATE
                     ค่า NULL, EOAC_NONE, NULL)(&N)

ถ้าตัวแปร bAllowOneUser เป็นจริงแล้วเท่านั้นที่ระบุผู้ใช้ ได้เข้าถึงเนื่องจากเป็นการเฉพาะของผู้ใช้นั้นหนึ่งใน DACL ถ้า bAllowOneUser จะเป็น FALSEจาก นั้นผู้ใช้ทุกคนสามารถเข้าถึงได้เนื่องจากการ DACL เป็น null?

ถ้าคุณไม่ต้องการให้บริการที่จะระบุความปลอดภัยของตนเอง เอาการเรียกฟังก์ชัน Win32 API, CoInitializeSecurityและจะ COM แล้ว ตรวจสอบว่าการตั้งค่าความปลอดภัยจากรีจิสทรี วิธีสะดวกในการกำหนดค่าการตั้งค่ารีจิสทรีเป็นโปรแกรมอรรถประโยชน์DCOMCNFGที่กล่าวถึงในบทความนี้?

เมื่อมีระบุความปลอดภัย วัตถุได้ลงทะเบียนกับ COM เพื่อให้โปรแกรมสามารถเชื่อมต่อไคลเอนต์ใหม่ สุดท้าย โปรแกรมบอก SCM ที่ใช้งาน และโปรแกรมป้อนข้อความวน โปรแกรมจะสะสมจนกว่าโปรแกรมลงรายการบัญชีข้อ quit เมื่อปิดระบบบริการ?

ดูข้อมูลเพิ่มเติมเกี่ยวกับความปลอดภัยของ Windows NT บทความ MSDN, "Windows NT Security ในทฤษฎีและการปฏิบัติงาน"

Index