2009-11-05 32 views
1

以下代码位于名为run.rb的文件中,其想法是以不同的用户身份运行ruby,因此我可以执行一些测试。在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 
当我运行 '红宝石run.rb' 命令外壳打开,然后关闭马上

。 任何想法我在这里做错了吗?

+0

我添加了Windows标记,因为它限制了一些选项。在Unix平台上,这可以用sudo完成。 – EmFi 2009-11-05 15:51:24

回答

0

恢复已死的问题,但在Windows NT中,其他用户无法与您的桌面进行交互。因此,如果您登录为DOMAIN\user1并产生一个进程为DOMAIN\user2,则DOMAIN\user2进程无法与DOMAIN\user1的桌面进行交互。这是一个例外,如果该进程作为服务运行,并且在服务属性中选中“可与桌面交互”框(但我认为这需要运行为SYSTEM)。

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

+1

我标记这是正确的,因为它可能是正确的答案 - 但我过去在这个问题上工作的方式,所以不会现在就试试吧:) – 2011-05-09 08:18:18

0

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

+0

睡觉没有效果。 如果代码已经运行,它会打开一个IE实例,我可能会注意到:) – 2009-11-06 11:34:37

相关问题