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

Bagaimanakah Pengguna Bukan Pentadbir Boleh Memulakan dan Menghentikan Perkhidmatan Windows dalam C?

Barbara Streisand
Barbara Streisandasal
2024-10-25 04:07:28983semak imbas

How Can Non-Administrator Users Start and Stop Windows Services in C  ?

Memulakan Perkhidmatan Windows daripada Aplikasi tanpa Hak Pentadbir (C )

Soalan:

Bagaimana bolehkah pengguna memulakan atau menghentikan perkhidmatan Windows daripada aplikasi bukan pentadbir tanpa memerlukan hak pentadbir?

Jawapan:

Untuk memberikan pengguna bukan pentadbir keupayaan untuk memulakan dan menghentikan perkhidmatan Windows, ubah suai kebenaran perkhidmatan. Proses ini sebaiknya dilakukan semasa pemasangan perkhidmatan.

Gunakan langkah berikut:

  1. Dapatkan Pemegang Servis: Buka pemegang kepada perkhidmatan sasaran dengan Kebenaran WRITE_DAC.
  2. Buat Deskriptor Keselamatan (SDDL): Bina rentetan SDDL yang menentukan kebenaran yang diingini untuk pelbagai kumpulan pengguna, seperti membenarkan pengguna interaktif memulakan perkhidmatan:
<code class="pre">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
  ;</code>
  1. Tukar dan Tetapkan SD: Tukar rentetan SDDL kepada deskriptor keselamatan dan tetapkan pada objek perkhidmatan menggunakan fungsi SetServiceObjectSecurity:
<code class="pre">PSECURITY_DESCRIPTOR sd;

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

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

Untuk memberikan pengguna bukan pentadbir hak untuk menghentikan perkhidmatan juga, sertakan WP kanan dalam rentetan SDDL:

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

Rujuk entri blog Wayne Martin untuk kod SDDL tambahan untuk hak perkhidmatan.

Atas ialah kandungan terperinci Bagaimanakah Pengguna Bukan Pentadbir Boleh Memulakan dan Menghentikan 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