diff --git a/include/WinStd/Win.h b/include/WinStd/Win.h index a779872e..ddf06ada 100644 --- a/include/WinStd/Win.h +++ b/include/WinStd/Win.h @@ -832,11 +832,11 @@ namespace winstd /// /// Construct the impersonator and impersonates the given user /// - /// \param[in] hToken A handle to a primary or impersonation access token that represents a logged-on user + /// \param[in] hToken A handle to a primary or impersonation access token that represents a logged-on user or NULL for no impersonation. /// /// \sa [ImpersonateLoggedOnUser function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa378612.aspx) /// - user_impersonator(_In_ HANDLE hToken); + user_impersonator(_In_opt_ HANDLE hToken); /// /// Reverts to current user and destructs the impersonator diff --git a/src/Win.cpp b/src/Win.cpp index 2bcd3cb1..b60a9dc4 100644 --- a/src/Win.cpp +++ b/src/Win.cpp @@ -283,9 +283,9 @@ winstd::actctx_activator::~actctx_activator() // winstd::user_impersonator ////////////////////////////////////////////////////////////////////// -winstd::user_impersonator::user_impersonator(_In_ HANDLE hToken) +winstd::user_impersonator::user_impersonator(_In_opt_ HANDLE hToken) { - m_cookie = ImpersonateLoggedOnUser(hToken); + m_cookie = hToken && ImpersonateLoggedOnUser(hToken); }