gpt4 book ai didi

Ruby:gem win32-service:创建具有管理员权限的服务

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:09 32 4
gpt4 key购买 nike

我正在使用 win32-service gem 创建一个使用 Ruby (1.9.3-p429, MRI) 的 Windows 服务。

这段代码有效。

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.create 时将 :service_start_name:password 设置为完全相同的值(通过取消注释代码片段中的行),就像我在“服务”选项卡中使用的那样,它不起作用。该服务器是运行 Windows 2008r2 Datacenter Edition 的 Amazon EC2 服务器,不属于我所知道的任何 Windows 域(因为我启动了它)。

我需要做哪些不同的事情才能让此 Windows 服务以管理员权限运行?

最佳答案

底层 CreateService Windows API 函数需要 lpServiceStartName 字段上的帐户域,因此您可能需要将 :service_start_name 字段设置为'domain\Administrator',其中帐户域通常是计算机名。

关于Ruby:gem win32-service:创建具有管理员权限的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17710465/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com