mirror of https://github.com/dahall/Vanara.git
Completed unit tests for processthreadsapi.h in AdvApi32
parent
0626a21e17
commit
d95600ecf0
|
@ -0,0 +1,54 @@
|
|||
using NUnit.Framework;
|
||||
using System;
|
||||
using static Vanara.PInvoke.AdvApi32;
|
||||
using static Vanara.PInvoke.Kernel32;
|
||||
|
||||
namespace Vanara.PInvoke.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class ProcessThreadsApiTests
|
||||
{
|
||||
[Test]
|
||||
public void CreateProcessAsUserTest()
|
||||
{
|
||||
Assert.That(OpenProcessToken(GetCurrentProcess(), TokenAccess.TOKEN_ALL_ACCESS, out var hTok), ResultIs.Successful);
|
||||
using (hTok)
|
||||
{
|
||||
var si = STARTUPINFO.Default;
|
||||
si.ShowWindowCommand = ShowWindowCommand.SW_MAXIMIZE;
|
||||
Assert.That(CreateProcessAsUser(hTok, @"C:\Windows\notepad.exe", bInheritHandles: false, dwCreationFlags: CREATE_PROCESS.NORMAL_PRIORITY_CLASS, lpStartupInfo: si, lpProcessInformation: out var pi), ResultIs.Successful);
|
||||
Sleep(500);
|
||||
Kernel32.TerminateProcess(pi.hProcess, 0);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CreateProcessAsUserTest2()
|
||||
{
|
||||
Assert.That(OpenProcessToken(GetCurrentProcess(), TokenAccess.TOKEN_ALL_ACCESS, out var hTok), ResultIs.Successful);
|
||||
using (hTok)
|
||||
{
|
||||
var si = STARTUPINFOEX.Default;
|
||||
si.StartupInfo.ShowWindowCommand = ShowWindowCommand.SW_MAXIMIZE;
|
||||
Assert.That(CreateProcessAsUser(hTok, @"C:\Windows\notepad.exe", bInheritHandles: false, dwCreationFlags: CREATE_PROCESS.NORMAL_PRIORITY_CLASS, lpStartupInfo: si, lpProcessInformation: out var pi), ResultIs.Successful);
|
||||
Sleep(500);
|
||||
Kernel32.TerminateProcess(pi.hProcess, 0);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void OpenThreadTokenTest()
|
||||
{
|
||||
Assert.That(OpenThreadToken(GetCurrentThread(), TokenAccess.TOKEN_QUERY | TokenAccess.TOKEN_ADJUST_PRIVILEGES, true, out var hTok), ResultIs.FailureCode(Win32Error.ERROR_NO_TOKEN));
|
||||
Assert.That(OpenProcessToken(GetCurrentProcess(), TokenAccess.TOKEN_DUPLICATE, out var hPrTok), ResultIs.Successful);
|
||||
using (hPrTok)
|
||||
{
|
||||
Assert.That(DuplicateTokenEx(hPrTok, TokenAccess.TOKEN_IMPERSONATE | TokenAccess.TOKEN_QUERY | TokenAccess.TOKEN_ADJUST_PRIVILEGES,
|
||||
default, SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, TOKEN_TYPE.TokenImpersonation, out hTok), ResultIs.Successful);
|
||||
using (hTok)
|
||||
Assert.That(SetThreadToken(GetCurrentThread(), hTok), ResultIs.Successful);
|
||||
Assert.That(SetThreadToken(IntPtr.Zero, HTOKEN.NULL), ResultIs.Successful);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -54,6 +54,7 @@
|
|||
<Compile Include="AdvApi32\ProviderInfo.cs" />
|
||||
<Compile Include="AdvApi32\LsaTests.cs" />
|
||||
<Compile Include="AdvApi32\PerfLibTests.cs" />
|
||||
<Compile Include="AdvApi32\ProcessThreadsApiTests.cs" />
|
||||
<Compile Include="AdvApi32\SecurityBaseApiTests.cs" />
|
||||
<Compile Include="AdvApi32\ServiceTests.cs" />
|
||||
<Compile Include="AdvApi32\PSIDTests.cs" />
|
||||
|
|
Loading…
Reference in New Issue