我使用win32-service
寶石來創建使用Ruby(1.9.3-429頁,MRI)Windows服務創建服務。紅寶石:寶石Win32的服務:用管理員權限
的代碼作品這段代碼。
require 'rubygems'
require 'win32/service'
include Win32
SERVICE_NAME = 'myservice'
# Create a new service
Service.create({
:service_name => SERVICE_NAME,
:service_type => Service::WIN32_OWN_PROCESS,
:description => 'A custom service I wrote just for fun',
:start_type => Service::AUTO_START,
:error_control => Service::ERROR_NORMAL,
:binary_path_name => 'c:\Ruby193\bin\ruby.exe -C c:\ c:\myservice.rb',
:load_order_group => 'Network',
#:service_start_name => 'Administrator',
#:password => 'adminpasswd',
:display_name => SERVICE_NAME
})
Service.start SERVICE_NAME
我的問題是,該服務需要以管理員權限運行,但它調用這個代碼片斷實體運行作爲本地系統帳戶,這是默認的權限。
我可以打開服務GUI(services.msc)並進入並停止服務,通過服務(myservice)屬性的「登錄」選項卡提高權限,並使用Administrator/adminpasswd作爲用戶密碼。然後它以足夠的權限運行該服務。
然而,當我嘗試用:service_start_name
和:password
設置爲來電Service.create
完全相同的值(通過取消註釋中的代碼段的線),因爲我在服務選項卡使用,這是行不通的。此服務器是運行Windows 2008r2 Datacenter Edition的Amazon EC2服務器,不屬於我知道的任何Windows域的一部分(因爲我已啓動它)。
什麼我需要做的不同,以得到這個Windows服務以管理員權限運行?
我想過補充一點,但我相信只有'Administrators' * group *是內置域(您用'。\'選擇)的成員,而'Administrator'帳戶是成員默認域(計算機名稱)。很高興已經清除了。你也應該接受你自己的回答:) – Borodin
我對Windows管理,角色,團體,權利等方面的無知是巨大的。這種解決方案很有效,但根據您的意見,可能需要重新審視,以便更加優雅地融入適當的管理框架。 –