Method: Chef::ReservedNames::Win32::Security.logon_user
- Defined in:
- lib/chef/win32/security.rb
.logon_user(username, domain, password, logon_type, logon_provider) ⇒ Object
724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 |
# File 'lib/chef/win32/security.rb', line 724 def self.logon_user(username, domain, password, logon_type, logon_provider) username = wstring(username) domain = wstring(domain) password = wstring(password) token = FFI::Buffer.new(:pointer) unless LogonUserW(username, domain, password, logon_type, logon_provider, token) Chef::ReservedNames::Win32::Error.raise! end # originally this was .read_pointer, but that is interpreted as a non-primitive # class (FFI::Pointer) and causes an ArgumentError (Invalid Memory Object) when # compared to GetCurrentProcess(), which returns a HANDLE (void *). Since a # HANDLE is not a pointer to allocated memory that Ruby C extensions can understand, # the Invalid Memory Object error is raised. Token.new(Handle.new(token.read_ulong)) end |