Windows - Get current logged user

Hello /.

I need to know how is the user who is currently logged to an specific
machine.
I’m able to log into the box using ‘net/telnet’ and then do whatever I
need to
get the user logged. My 1st try was to take a look at the %USERNAME%
…jeje

I’ve found that doing this works but is not a cleaver solution:

def get_user

 require 'win32/eventlog'
 include Win32

 # Open the security log
 log = EventLog.open('Security')

 #Clear it
 log.clear

 #Close it
 log.close

 #Open the new log
 log = EventLog.open('Security')

 user=""

 #There is just one record
 log.read {|l|
    user=l.description.scan(/Client User Name:\t(.+)\r/).flatten[0]
}

user

end

Any idea of how accomplish this with a more robust method /?

Thanks

Rodrigo B. wrote:

I’ve found that doing this works but is not a cleaver solution:
log.clear
log.read {|l|
Thanks
def get_user; ENV[‘USERNAME’]; end

James T. wrote:

def get_user; ENV[‘USERNAME’]; end

The issue here is that it will return the username Im using to log into
the box
using net/telnet.

Iam looking for the username of the guy seated in front of the computer.
Something similar to the UNIX ‘finger,who,w’ commands

I’ve already tried looking in the registry with out success.

/. thNKs

Rodrigo B. wrote:

I’ve already tried looking in the registry with out success.
require ‘windows/system_info’
include Windows::SystemInfo

buffer = 0.chr * 256
nsize = [buffer.size].pack(“L”)

unless GetUserName.call(buffer, nsize)
raise ‘Something went wrong’
end

length = nsize.unpack(“L”)[0]
username = buffer[0 … length].chop
username

Regards,

Dan

On Oct 21, 5:38 pm, Daniel B. [email protected] wrote:

end

length = nsize.unpack(“L”)[0]
username = buffer[0 … length].chop
username

Regards,

Dan

Hi Daniel,

Your suggestion looks neat! However, I ran into trouble running it.

I got the error message:
"K:/_Utilities/Ruby_1.8.2-15/ruby/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in gem_original_require': No such file to load -- windows/system_info (LoadError) from K:/_Utilities/Ruby_1.8.2-15/ruby/lib/ruby/site_ruby/1.8/rubygems/ custom_require.rb:27:in require’
from GetUsername.rb:4

Exit code: 1"

My line #4 was the require statement.

I tried “gem install windows”, which yielded:
Could not find windows (> 0) in the repository

I tried “gem install windows/system_info”, and got:
Could not find windows/system_info (> 0) in the repository

Would you please point out where I went wrong?

Thanks in Advance,
Richard

RichardOnRails wrote:

require ‘windows/system_info’
username = buffer[0 … length].chop
I got the error message:
I tried “gem install windows”, which yielded:
Could not find windows (> 0) in the repository

I tried “gem install windows/system_info”, and got:
Could not find windows/system_info (> 0) in the repository

Would you please point out where I went wrong?

Actually, you can use the sys-admin gem, which abstracts that for you:

require ‘sys/admin’
include Sys

p Admin.get_login

Regards,

Dan

On Oct 22, 7:05 pm, Daniel B. [email protected] wrote:

I’ve already tried looking in the registry with out success.
length = nsize.unpack(“L”)[0]

require ‘sys/admin’
include Sys

p Admin.get_login

Regards,

Dan

On Oct 22, 7:05 pm, Daniel B. [email protected] wrote:

I’ve already tried looking in the registry with out success.
length = nsize.unpack(“L”)[0]

require ‘sys/admin’
include Sys

p Admin.get_login

Regards,

Dan

Thanks, Dan. That’s a nice project you composed. Works great. Many
thanks for sharing it with the Ruby community … and me in
particular :slight_smile:

If you don’t mind another question, can you speculate on why the
command (on my WinXP-Pro/SP2 system with Ruby 1.8.2-15):
K:_Utilities\Ruby_1.8.2-15>ri sys-admin
yields:
Nothing known about sys-admin

I tried a couple of variants to no avail:
K:_Utilities\Ruby_1.8.2-15>ri sys-admin-1.4.2-mswin32
Bad argument: sys-admin-1.4.2-mswin32

K:_Utilities\Ruby_1.8.2-15\ruby\lib\ruby\gems\1.8\gems>ri sys-
admin-1.4.2-mswin32
Bad argument: sys-admin-1.4.2-mswin32

K:_Utilities\Ruby_1.8.2-15\ruby\lib\ruby\gems\1.8\gems>ri sys-admin
Nothing known about sys-admin

I presume the ri should return the contents of:
K:_Utilities\Ruby_1.8.2-15\ruby\lib\ruby\gems\1.8\gems\sys-
admin-1.4.2-mswin32\README
which is loaded with your documentation.

I’ve never tried using ri heretofore. I tried it on some other
packages just now and got the same “Nothing known” msg.

Any ideas for this Ruby newbie (sort of)?

Best wishes,
Richard

RichardOnRails wrote:

Something similar to the UNIX ‘finger,who,w’ commands
username
from GetUsername.rb:4
include Sys

Rodrigo B. wrote:
buffer = 0.chr * 256
Your suggestion looks neat! However, I ran into trouble running it.
Could not find windows (> 0) in the repository
Regards,
yields:
K:_Utilities\Ruby_1.8.2-15\ruby\lib\ruby\gems\1.8\gems>ri sys-admin
Nothing known about sys-admin

I presume the ri should return the contents of:
K:_Utilities\Ruby_1.8.2-15\ruby\lib\ruby\gems\1.8\gems\sys-
admin-1.4.2-mswin32\README
which is loaded with your documentation.

I’ve never tried using ri heretofore. I tried it on some other
packages just now and got the same “Nothing known” msg.

I’m actually not that familiar with ri myself. But, you should be able
to call “ri Sys::Admin.get_login” and get a result.

I wonder if I can set things up so that anyone who does ‘ri sys-admin’
will get the README. Anyone know?

Regards,

Dan

RichardOnRails wrote:

require ‘windows/system_info’
username = buffer[0 … length].chop
I got the error message:
I tried “gem install windows”, which yielded:
Could not find windows (> 0) in the repository

I tried “gem install windows/system_info”, and got:
Could not find windows/system_info (> 0) in the repository

Would you please point out where I went wrong?

Whoops, forgot to mention the gem. You want: gem install windows-pr

Regards,

Dan

On Oct 22, 11:36 pm, Daniel B. [email protected] wrote:

Iam looking for the username of the guy seated in front of the computer.
username = buffer[0 … length].chop
custom_require.rb:27:in `require’
require ‘sys/admin’
On Oct 21, 5:38 pm, Daniel B. [email protected] wrote:
include Windows::SystemInfo
Hi Daniel,
I tried “gem install windows”, which yielded:

K:_Utilities\Ruby_1.8.2-15>ri sys-admin

I’m actually not that familiar with ri myself. But, you should be able
to call “ri Sys::Admin.get_login” and get a result.

I wonder if I can set things up so that anyone who does ‘ri sys-admin’
will get the README. Anyone know?

Regards,

Dan

Hi Dan,

Thanks for your additional reply. When the gods are against you, you
can’t catch a break, e.g.

K:_Downloads\Ruby\amrita-1.0.2>ri Sys::Admin.get_login
Nothing known about Sys::Admin.get_login

I’ll post a generic question about later after I exhaust all my
research sources, i.e. Google, PickAxe, The Ruby Way, The Ruby
Cookbook.

Again, thanks for educating me.

Best wishes,
Richard

I, too, would like to know how to get the current user. For all
platforms, I guess.

-Thufir

Thufir wrote:

I, too, would like to know how to get the current user. For all
platforms, I guess.

require ‘sys/admin’
include Sys

p Admin.get_login :slight_smile:

Works everywhere. :slight_smile:

Regards,

Dan

On Oct 22, 10:55 pm, RichardOnRails
[email protected] wrote:

def get_user; ENV[‘USERNAME’]; end
nsize = [buffer.size].pack(“L”)

from K:/_Utilities/Ruby_1.8.2-15/ruby/lib/ruby/site_ruby/1.8/rubygems/
Could not find windows/system_info (> 0) in the repository
Regards,
On Oct 21, 5:38 pm, Daniel B. [email protected] wrote:

include Windows::SystemInfo
username
"K:/_Utilities/Ruby_1.8.2-15/ruby/lib/ruby/site_ruby/1.8/rubygems/
Could not find windows (> 0) in the repository

If you don’t mind another question, can you speculate on why the
admin-1.4.2-mswin32
I’ve never tried using ri heretofore. I tried it on some other
packages just now and got the same “Nothing known” msg.

Any ideas for this Ruby newbie (sort of)?

Best wishes,
Richard- Hide quoted text -

  • Show quoted text – Hide quoted text -

  • Show quoted text -

I am using fastri – a souped up version of ri

qri Sys::Admin =>

C:\Documents and Settings\Owner>qri Sys::Admin
------------------------------------------------------ Class:
Sys::Admin
(no description…)

Constants:

 VERSION:               '1.4.2'
 SidTypeUser:           1
 SidTypeGroup:          2
 SidTypeDomain:         3
 SidTypeAlias:          4
 SidTypeWellKnownGroup: 5
 SidTypeDeletedAccount: 6
 SidTypeInvalid:        7
 SidTypeUnknown:        8
 SidTypeComputer:       9

Class methods:

On the page
http://sysutils.rubyforge.org/
the links on the left for sys-admin send me to
http://rubyforge.org/docman/view.php/610/1557/net_proto.html

I think this an error.