【发布时间】:2013-07-16 15:16:19
【问题描述】:
我正在使用 win32-service gem 使用 Ruby(1.9.3-p429,MRI)创建 Windows 服务。
这个 sn-p 代码有效。
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
我遇到的问题是该服务需要以管理员权限运行,但调用此代码 sn-p 的实体作为本地系统帐户运行,这是默认权限。
我可以打开服务 GUI (services.msc) 并进入并停止服务,通过服务 (myservice) 属性的“登录”选项卡提高权限,并使用管理员/adminpasswd 作为用户/密码。然后它以足够的权限运行服务。
但是,当我尝试调用 Service.create 并将 :service_start_name 和 :password 设置为与我在“服务”选项卡中使用的完全相同的值(通过取消注释代码 sn-p 中的行)时,它不会不行。该服务器是运行 Windows 2008r2 Datacenter Edition 的 Amazon EC2 服务器,不属于我所知道的任何 Windows 域(因为我启动了它)。
我需要做些什么不同的事情才能让这个 Windows 服务以管理员权限运行?
【问题讨论】:
标签: ruby winapi elevated-privileges win32-service-gem