在沒有管理員權限的情況下從應用程式啟動Windows 服務(C )
問題:
問題:問題: 問題:
<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>
<code class="pre">PSECURITY_DESCRIPTOR sd; if (!ConvertStringSecurityDescriptorToSecurityDescriptor(sddl, SDDL_REVISION_1, &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中文網其他相關文章!