Sha256: dc42b108b3c2f27dbb0eab8f8530551d38ee5abda71f36ca109f35a8d420e54c

Contents?: true

Size: 914 Bytes

Versions: 24

Compression:

Stored size: 914 Bytes

Contents

require 'windows/system_info'
require 'windows/security'
require 'sys/admin'

module Facter::Util::Root
  extend ::Windows::SystemInfo
  extend ::Windows::Security

  def self.root?
    # if Vista or later, check for unrestricted process token
    return Win32::Security.elevated_security? unless windows_version < 6.0

    # otherwise 2003 or less
    check_token_membership
  end

  def self.check_token_membership
    sid = 0.chr * 80
    size = [80].pack('L')
    member = 0.chr * 4

    unless CreateWellKnownSid(Windows::Security::WinBuiltinAdministratorsSid, nil, sid, size)
      raise "Failed to create administrators SID"
    end

    unless IsValidSid(sid)
      raise "Invalid SID"
    end

    unless CheckTokenMembership(nil, sid, member)
      raise "Failed to check membership"
    end

    # Is administrators SID enabled in calling thread's access token?
    member.unpack('L')[0] == 1
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
facter-1.7.6 lib/facter/util/windows_root.rb
facter-2.0.2 lib/facter/util/windows_root.rb
facter-2.0.2-x86-mingw32 lib/facter/util/windows_root.rb
facter-2.0.2-universal-darwin lib/facter/util/windows_root.rb
facter-2.0.1 lib/facter/util/windows_root.rb
facter-2.0.1-x86-mingw32 lib/facter/util/windows_root.rb
facter-2.0.1-universal-darwin lib/facter/util/windows_root.rb
facter-2.0.1.rc4 lib/facter/util/windows_root.rb
facter-2.0.1.rc4-x86-mingw32 lib/facter/util/windows_root.rb
facter-2.0.1.rc4-universal-darwin lib/facter/util/windows_root.rb
facter-2.0.1.rc3 lib/facter/util/windows_root.rb
facter-2.0.1.rc3-x86-mingw32 lib/facter/util/windows_root.rb
facter-2.0.1.rc3-universal-darwin lib/facter/util/windows_root.rb
facter-2.0.1.rc2 lib/facter/util/windows_root.rb
facter-2.0.1.rc2-x86-mingw32 lib/facter/util/windows_root.rb
facter-2.0.1.rc2-universal-darwin lib/facter/util/windows_root.rb
facter-2.0.1.rc1 lib/facter/util/windows_root.rb
facter-2.0.1.rc1-x86-mingw32 lib/facter/util/windows_root.rb
facter-2.0.1.rc1-universal-darwin lib/facter/util/windows_root.rb
facter-1.7.5 lib/facter/util/windows_root.rb