diff options
author | Jay Mundrawala <jdmundrawala@gmail.com> | 2015-05-08 09:28:27 -0700 |
---|---|---|
committer | Jay Mundrawala <jdmundrawala@gmail.com> | 2015-05-15 08:51:19 -0700 |
commit | e6c9fd4f30a66fc6e4cfc1b1c32937fa40124988 (patch) | |
tree | 53f72d6431227d392739034a28adfd3bb6697194 | |
parent | 1990732da929e288b5f4ff309a5273a606dfa3bc (diff) | |
download | chef-e6c9fd4f30a66fc6e4cfc1b1c32937fa40124988.tar.gz |
NetUserDel uses ffi instead in win32-api
-rw-r--r-- | lib/chef/util/windows/net_user.rb | 7 | ||||
-rw-r--r-- | lib/chef/win32/api/net.rb | 6 | ||||
-rw-r--r-- | lib/chef/win32/user.rb | 14 |
3 files changed, 24 insertions, 3 deletions
diff --git a/lib/chef/util/windows/net_user.rb b/lib/chef/util/windows/net_user.rb index 5da0fc3835..648871b1f3 100644 --- a/lib/chef/util/windows/net_user.rb +++ b/lib/chef/util/windows/net_user.rb @@ -213,9 +213,10 @@ class Chef::Util::Windows::NetUser < Chef::Util::Windows end def delete - rc = NetUserDel.call(nil, @name) - if rc != NERR_Success - raise ArgumentError, get_last_error(rc) + begin + Chef::ReservedNames::Win32::NetUser::net_user_del(nil, @username) + rescue Chef::Exceptions::Win32APIError => e + raise ArgumentError, e end end diff --git a/lib/chef/win32/api/net.rb b/lib/chef/win32/api/net.rb index 91d665c49e..72caf46628 100644 --- a/lib/chef/win32/api/net.rb +++ b/lib/chef/win32/api/net.rb @@ -192,6 +192,12 @@ class Chef #); safe_attach_function :NetUserSetInfo, [:LPCWSTR, :LPCWSTR, :DWORD, :LPBYTE, :LPDWORD], :DWORD +#NET_API_STATUS NetUserDel( +# _In_ LPCWSTR servername, +# _In_ LPCWSTR username +#); + safe_attach_function :NetUserDel, [:LPCWSTR, :LPCWSTR], :DWORD + end end end diff --git a/lib/chef/win32/user.rb b/lib/chef/win32/user.rb index 8b28bf8b29..41a8517952 100644 --- a/lib/chef/win32/user.rb +++ b/lib/chef/win32/user.rb @@ -173,6 +173,20 @@ END end end + def self.net_user_del(server_name, user_name) + server_name = wstring(server_name) + user_name = wstring(user_name) + + rc = NetUserDel(server_name, user_name) + if rc != NERR_Success + if Chef::ReservedNames::Win32::Error.get_last_error != 0 + Chef::ReservedNames::Win32::Error.raise! + else + net_api_error!(rc) + end + end + end + def self.net_local_group_add_member(server_name, group_name, domain_user) server_name = server_name.to_wstring if server_name group_name = group_name.to_wstring |