Find computer uuid
-
I would like to find motherboard UUID. I almost did, but in Windows SU2014 I must use
...force_encoding("utf-16le")...
I don't know why and the worst, now one SU2014 Windows user is reporting:
Error: #<ArgumentError: unknown encoding name - utf-16le>
Someone have an idea about why sometimes not work in Windows, or have a best method to find UUID?
Code to find UUID:
MAC OS:
uuid = %x(ioreg -l | awk '/IOPlatformSerialNumber/ { print }')
WIN:
#RUBY_VERSION 1.8
cmd="wmic csproduct get uuid" uuid = %x(#{cmd})
#RUBY_VERSION 2.0 (workaround to fix the backquotes bug included):
cmd="wmic csproduct get uuid" filename = ENV["TMP"].encode("utf-8") + "\\backquote.out" exec_string = "
" + cmd + " > " + filename + "" exec_string.gsub! '\\', '/' eval("#{exec_string}") contents = File.read(filename) uuid= contents.force_encoding("utf-16le").encode('UTF-8') uuid.slice!(0)
-
Thanks to Driven and Dan.
I will use new notation instead use force_encoding. I think now it should works...#UUID in RUBY 2.0 WINDOWS
` cmd="wmic csproduct get uuid"
filename = File.join(ENV["TMP"],"backquote.out")exec_string = "`" + cmd + " > " + filename + "`" exec_string.gsub! '\\', '/' eval("#{exec_string}") uuid="" open(filename, "r:BOM|utf-16le:UTF-8") do |io| uuid = io.read end`
Advertisement