2013-08-28 5 views
3

Windows에서 도메인 사용자의 이름을 알아야합니다. 여기 Ruby를 사용하는 서비스에서 Windows 도메인의 사용자 이름을 얻는 방법은 무엇입니까?

내가 이름을 얻기 위해 시도하는 방법이다, 그러나 모든 도메인 이름 반환 :

1

... 
ENV['username'] # or ENV['USERNAME'] or ENV['userid'] 
... 

2

... 
require 'etc' 
puts Etc.getlogin 
... 

... 
require 'dl/win32' 

def get_user_name 
    api = Win32API.new(
    'advapi32.dll', 
    'GetUserName', 
    'PP', 
    'i' 
) 

    buf = "\0" * 512 
    len = [512].pack('L') 
    api.call(buf,len) 

    buf[0..(len.unpack('L')[0])] 
end 
... 

4.

이 방법의 반환 문자열 "system" :

... 
require 'win32ole' 
network=WIN32OLE.new("Wscript.Network") 
puts network.username 
... 

어떻게 사용자 이름이나 쌍 도메인 \ 사용자 이름을 얻을 수 있나요?

+0

'WhoAmI'또는 'WhoAmI/UPN' 또는'WhoAmI/FQDN' 또는 'WhoAmI/user'가 도움이됩니까? – Bala

+0

예, 도움이되었지만 다른 점이 있습니다. 내 ** Rails ** 응용 프로그램은 Apache 2.4 **에서 실행되며 ** Windows 서비스 **로 구성됩니다. 그리고 나는 도메인 이름뿐만 아니라 내 응용 프로그램에서 사용자 이름을 얻고 싶었습니다. –

답변

0

시스템 명령을 실행하여 변수에 저장할 수 없습니다.

u = `WhoAmI /user` 

지금 u은 당신의 처리, 밤은에 대한 사용자 정보가?

+0

그러나 도메인 기반 사용자는 매개 변수없이 'WhoAmI/UPN' 또는'WhoAmI/FQDN '또는'WhoAmI'를 사용하는 것이 좋습니다. 'WhoAmI/user'는 ** SSID ** 및 ** LogonID **를 반환합니다. –

관련 문제