Rumah  >  Artikel  >  pembangunan bahagian belakang  >  **Bagaimanakah Bukan Pentadbir Boleh Memulakan Perkhidmatan Windows dalam C ?**

**Bagaimanakah Bukan Pentadbir Boleh Memulakan Perkhidmatan Windows dalam C ?**

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 08:16:02374semak imbas

**How Can Non-Administrators Start Windows Services in C  ?**

Mulakan Perkhidmatan Windows daripada Aplikasi tanpa Hak Pentadbir (C )

Memulakan perkhidmatan Windows daripada aplikasi berasingan tanpa keistimewaan pentadbir boleh menjadi satu cabaran . Walau bagaimanapun, terdapat penyelesaian yang selamat dan berkesan yang membenarkan bukan pentadbir untuk memulakan tindakan perkhidmatan.

Satu pendekatan yang mungkin memerlukan pengubahsuaian kebenaran yang dikaitkan dengan objek perkhidmatan semasa pemasangan. Dengan melaraskan deskriptor keselamatan, anda boleh memberikan kebenaran yang diperlukan kepada pengguna bukan pentadbir, memastikan mereka boleh memulakan dan menghentikan perkhidmatan.

Menggunakan API Windows seperti ConvertStringSecurityDescriptorToSecurityDescriptor dan SetServiceObjectSecurity, anda boleh mengubah suai tetapan keselamatan objek perkhidmatan seperti berikut:

<code class="c++">wchar_t sddl[] = L"D:"
  L"(A;;CCLCSWRPWPDTLOCRRC;;;SY)"           // default permissions for local system
  L"(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)"   // default permissions for administrators
  L"(A;;CCLCSWLOCRRC;;;AU)"                 // default permissions for authenticated users
  L"(A;;CCLCSWRPWPDTLOCRRC;;;PU)"           // default permissions for power users
  L"(A;;RP;;;IU)"                           // added permission: start service for interactive users
  ;

PSECURITY_DESCRIPTOR sd;

if (!ConvertStringSecurityDescriptorToSecurityDescriptor(sddl, SDDL_REVISION_1, &sd, NULL))
{
   fail();
}

if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd))
{
   fail();
}</code>

Anda memerlukan pemegang perkhidmatan dengan kebenaran WRITE_DAC untuk melaksanakan operasi ini. Dengan memasukkan pernyataan (A;;RP;;;IU) dalam SDDL, pengguna bukan pentadbir akan diberikan keupayaan untuk memulakan perkhidmatan. Jika anda juga ingin membenarkan mereka menghentikan perkhidmatan, tambahkan WP dengan betul, menghasilkan yang berikut:

<code class="c++">L"(A;;RPWP;;;IU)"                           
  // added permissions: start service, stop service for interactive users</code>

Pendekatan ini membolehkan anda memperkasakan bukan pentadbir dengan keupayaan kawalan perkhidmatan tanpa menjejaskan keselamatan sistem. Dengan mengkonfigurasi kebenaran dengan teliti, anda boleh menyediakan kefungsian yang diperlukan sambil mengekalkan tahap akses yang sesuai.

Atas ialah kandungan terperinci **Bagaimanakah Bukan Pentadbir Boleh Memulakan Perkhidmatan Windows dalam C ?**. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn