首頁  >  文章  >  後端開發  >  非管理員使用者如何用 C 啟動和停止 Windows 服務?

非管理員使用者如何用 C 啟動和停止 Windows 服務?

Barbara Streisand
Barbara Streisand原創
2024-10-25 04:07:28983瀏覽

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

在沒有管理員權限的情況下從應用程式啟動Windows 服務(C )

問題:

問題:

問題:

問題:
  1. 問題:
  2. 問題:
<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. 問題:
<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>

問🎜>
<code class="pre">L"(A;;RPWP;;;IU)"                           
  // added permissions: start service, stop service for interactive users</code>
如何使用者可以在不需要管理員權限的情況下從非管理員應用程式啟動或停止Windows 服務嗎?

答案:授予非管理員使用者此功能要啟動和停止 Windows 服務,請修改服務權限。理想情況下,此程序應在服務安裝期間執行。 使用以下步驟:取得服務句柄:使用下列指令開啟目標服務的句柄: WRITE_DAC 權限。 建立安全描述符(SDDL): 建構一個SDDL 字串,指定個別使用者群組所需的權限,例如允許互動式使用者啟動服務: 轉換並設定SD: 將SDDL 字串轉換為安全描述符並使用SetServiceObjectSecurity 函數將其設定在服務物件上: 要授予非管理員使用者停止服務的權利,請將WP 權限包含在SDDL 字串中:請參閱Wayne Martin 的部落格文章以取得其他SDDL 程式碼服務權利。

以上是非管理員使用者如何用 C 啟動和停止 Windows 服務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn