diff options
author | Jay Mundrawala <jdmundrawala@gmail.com> | 2015-07-30 08:02:55 -0700 |
---|---|---|
committer | Jay Mundrawala <jdmundrawala@gmail.com> | 2015-07-30 08:02:55 -0700 |
commit | f1ca00c684cb06b0792a71579526a508e5ecb408 (patch) | |
tree | c5b7570e659ab4a924bde2c44b1043dd64ded327 /lib/chef/win32/net.rb | |
parent | d03b97177b1a7dcf9e895f6ca74ec63f8b71f158 (diff) | |
download | chef-f1ca00c684cb06b0792a71579526a508e5ecb408.tar.gz |
FFYify NetLocalGroupAddMembers
Diffstat (limited to 'lib/chef/win32/net.rb')
-rw-r--r-- | lib/chef/win32/net.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/chef/win32/net.rb b/lib/chef/win32/net.rb index 8c3ddc5a57..afbe9f6ebf 100644 --- a/lib/chef/win32/net.rb +++ b/lib/chef/win32/net.rb @@ -238,6 +238,28 @@ END end end + def self.members_to_lgrmi3(members) + buf = FFI::MemoryPointer.new(LOCALGROUP_MEMBERS_INFO_3, members.size) + members.size.times.collect do |i| + member_info = LOCALGROUP_MEMBERS_INFO_3.new( + buf + i * LOCALGROUP_MEMBERS_INFO_3.size) + member_info[:lgrmi3_domainandname] = FFI::MemoryPointer.from_string(wstring(members[i])) + member_info + end + end + + def self.net_local_group_add_members(server_name, group_name, members) + server_name = wstring(server_name) + group_name = wstring(group_name) + + lgrmi3s = members_to_lgrmi3(members) + rc = NetLocalGroupAddMembers( + server_name, group_name, 3, lgrmi3s[0], members.size) + + if rc != NERR_Success + net_api_error!(rc) + end + end end end end |