summaryrefslogtreecommitdiff
path: root/lib/chef/win32/security/token.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/win32/security/token.rb')
-rw-r--r--lib/chef/win32/security/token.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/chef/win32/security/token.rb b/lib/chef/win32/security/token.rb
index ded4fc080e..9e494a73b9 100644
--- a/lib/chef/win32/security/token.rb
+++ b/lib/chef/win32/security/token.rb
@@ -58,6 +58,14 @@ class Chef
Chef::ReservedNames::Win32::Security::adjust_token_privileges(self, privileges_struct)
end
end
+
+ def duplicate_token(security_impersonation_level)
+ duplicate_token_handle = FFI::Buffer.new(:ulong)
+ unless Chef::ReservedNames::Win32::API::Security.DuplicateToken(handle.handle, security_impersonation_level, duplicate_token_handle)
+ raise Chef::ReservedNames::Win32::Error.raise!
+ end
+ Token.new(Handle.new(duplicate_token_handle.read_ulong))
+ end
end
end
end