在ruby中以用户身份创建进程

时间:2009-11-05 11:40:55

标签: windows ruby security

以下代码位于名为run.rb的文件中,其目的是以不同的用户身份运行ruby,以便我可以进行一些测试。

require 'rubygems'
require 'win32/process'

domain = 'WORLDWIDE'
user_name = 'user'
password = 'password'
rubyScript = 'ruby test.rb'
Process.create(:command_line => rubyScript, :domain => domain, :with_logon => user_name, :password => password, :close_handles => false)

test.rb的内容是:

require 'rubygems'
require 'watir'

browser = Watir::IE.new
browser.goto('http://localhost:44001/Users/List')
puts browser.text

当我运行'ruby run.rb'时,命令shell会打开然后立即关闭。 我在这里做错了什么想法?

2 个答案:

答案 0 :(得分:0)

它可能正常运行您的命令,打开一个新的命令窗口(因为它是一个新的Windows进程),然后在它完成时关闭该窗口。尝试在test.rb结束时抛出“睡眠1000”。如果我是正确的,应该保持窗口周围,以便您可以查看输出。

答案 1 :(得分:0)

恢复死机问题,但在Windows NT中,其他用户无法与您的桌面进行交互。因此,如果您以DOMAIN\user1身份登录并将流程生成为DOMAIN\user2,则DOMAIN\user2进程无法与DOMAIN\user1桌面进行交互。例外情况是,如果进程作为服务运行并且在服务属性中选中了“可以与桌面交互”框(但我认为它要求它以SYSTEM运行)。

可以使用本地安全策略(secpol.msc)为该用户分配用户权限,允许该用户与每个人的桌面进行交互,但如果授予用户登录权,那将是不安全的。交互。