Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Aplikasi Boleh Mengawal Perkhidmatan Windows Tanpa Keistimewaan Pentadbir?

Bagaimanakah Aplikasi Boleh Mengawal Perkhidmatan Windows Tanpa Keistimewaan Pentadbir?

DDD
DDDasal
2024-10-25 09:27:28576semak imbas

How Can Applications Control Windows Services Without Administrator Privileges?

Mengawal Perkhidmatan Windows daripada Aplikasi Tanpa Keistimewaan Pentadbir

Perkhidmatan Windows menyediakan cara yang mudah untuk menjalankan tugas yang berjalan lama di latar belakang tanpa campur tangan pengguna . Walau bagaimanapun, secara lalai, memulakan atau menghentikan perkhidmatan ini memerlukan hak pentadbir. Ini menimbulkan had untuk aplikasi yang perlu mengurus perkhidmatan bagi pihak pengguna.

Penyelesaian

Penyelesaian kepada masalah ini terletak pada mengubah suai kebenaran objek perkhidmatan. Ini membolehkan aplikasi berinteraksi dengan perkhidmatan tanpa memerlukan keistimewaan yang tinggi. Berikut ialah pendekatan yang dicadangkan menggunakan C :

<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, &amp;sd, NULL))
{
   // Handle error
}

if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd))
{
   // Handle error
}</code>

Penjelasan

Kod ini membuka deskriptor keselamatan perkhidmatan yang ditentukan dan mengubah suai DACL (senarai kawalan akses budi bicaranya). Ia menambah ACE baharu (entri kawalan akses) yang memberikan hak "Mulakan Perkhidmatan" kepada pengguna interaktif (pengguna bukan pentadbir).

Untuk menghentikan perkhidmatan juga, tambahkan hak "Hentikan Perkhidmatan" (WP ) ke senarai:

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

Dengan mengubah suai kebenaran objek perkhidmatan, anda boleh memperkasakan aplikasi dengan keupayaan untuk mengurus perkhidmatan Windows dengan lancar tanpa memerlukan peningkatan pentadbir.

Atas ialah kandungan terperinci Bagaimanakah Aplikasi Boleh Mengawal Perkhidmatan Windows Tanpa Keistimewaan Pentadbir?. 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