- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个调用 CreateProcessWithTokenW 失败,访问被拒绝。任何想法如何调试?
对 CreateProcessWithTokenW 的调用在这里:https://github.com/fschwiet/PShochu/blob/master/PShochu/PInvoke/NetWrappers/ProcessUtil.cs
现在我正在为当前进程使用访问 token ,最终我将使用来自另一个用户的 token 。现在我正在使用 https://github.com/fschwiet/PShochu/blob/master/PShochu/PInvoke/NetWrappers/AccessToken.cs获取访问 token 。
如果要调试,请拉下源代码并运行 build_and_test.ps1。错误堆栈是:
1) Test Error : PShochu.Tests.can_run_remote_interactive_tasks, given a psake script which writes the current process id to output, when that script is invoked interactively, then the script succeeds
System.ComponentModel.Win32Exception : Access is denied
at PShochu.PInvoke.NetWrappers.ProcessUtil.CreateProcessWithToken(IntPtr userPrincipalToken, String applicationName,
String applicationCommand, Boolean dontCreateWindow, Boolean createWithProfile, StreamReader& consoleOutput, StreamReader& errorOutput) in c:\src\PShochu\PShochu\PInvoke\NetWrappers\ProcessUtil.cs:line 52
at PShochu.ProcessHandling.RunNoninteractiveConsoleProcessForStreams2(String command, String commandArguments, String& newLine) in c:\src\PShochu\PShochu\ProcessHandling.cs:line 36
at PShochu.ProcessHandling.RunNoninteractiveConsoleProcess(String command, String commandArguments) in c:\src\PShochu\PShochu\ProcessHandling.cs:line 20
at PShochu.Tests.can_run_remote_interactive_tasks.<>c__DisplayClass16.<>c__DisplayClass18.<Specify>b__2() in c:\src\PShochu\PShochu.Tests\can_run_remote_interactive_tasks.cs:line 27
at NJasmine.Core.Execution.DescribeState.<>c__DisplayClass7`1.<visitBeforeEach>b__3() in c:\src\NJasmine\NJasmine\Core\Execution\DescribeState.cs:line 62
SE_ASSIGNPRIMARYTOKEN_NAME "Replace a process level token"
SE_TCB_NAME "Act as part of the operatin system"
SE_INCREASE_QUOTA_NAME "Adjust memory quotas for a process"
最佳答案
通过反复试验,我发现您传递给 CreateProcessWithTokenW() 的 token 需要以下访问标志(至少在 Windows 7 SP1 64 位上):
HANDLE hToken = NULL;
if(OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE, &hToken))
{
HANDLE hDuplicate = NULL;
if(DuplicateTokenEx(hToken, TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_QUERY | TOKEN_ADJUST_DEFAULT | TOKEN_ADJUST_SESSIONID, NULL, SecurityImpersonation, TokenPrimary, &hDuplicate))
{
TCHAR szCommandLine[MAX_PATH];
_tcscpy_s(szCommandLine, MAX_PATH, _T("C:\\Windows\\system32\\notepad.exe"));
STARTUPINFO StartupInfo;
ZeroMemory(&StartupInfo, sizeof(STARTUPINFO));
StartupInfo.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION ProcessInformation;
ZeroMemory(&ProcessInformation, sizeof(PROCESS_INFORMATION));
if(CreateProcessWithTokenW(hDuplicate, LOGON_WITH_PROFILE, NULL, szCommandLine, 0, NULL, NULL, &StartupInfo, &ProcessInformation))
{
WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
CloseHandle(ProcessInformation.hThread);
ProcessInformation.hThread = NULL;
CloseHandle(ProcessInformation.hProcess);
ProcessInformation.hProcess = NULL;
}
CloseHandle(hDuplicate);
hToken = hDuplicate;
}
CloseHandle(hToken);
hToken = NULL;
}
关于winapi - 为什么 CreateProcessWithTokenW 因 ERROR_ACCESS_DENIED 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5447418/
我正在尝试在 C++ 中以编程方式将文件的所有者设置为另一个用户。 我确实为我的进程启用了 SeRestorePrivilege。我可以使用 Process Explorer 确认这一点。我开始这个过
我需要检索目录句柄才能调用 ReadDirectoryChangesW 就可以了。实际上我需要的不止于此,但让我们先放轻松。我已将问题缩小为: m_directoryHandle = CreateFi
我正在尝试与用于创建 TUN 接口(interface) (WinTun) 的驱动程序交互,但为了从它们发送和接收数据,我需要注册一个环形缓冲区。我正在使用的代码看起来像这样(我省略了使用 Setup
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
Windows 手机: 作为卸载驱动程序的最后一步,我尝试使用 RegDeleteKey API 删除注册表子项 (HKLM\Drivers\BuiltIn\XYZ),但它无法返回 ERROR_ACC
我想获取 HKEY_CLASSES_ROOT\\SOFTWARE\\Classes\\CLSID 键下的所有 CLSID 键。 我知道该 key 是合并的 HKEY_LOCAL_MACHINE\\SO
我需要为客户端和服务器(在同一主机)之间的通信创建命名管道,代码如下: WCHAR wszPipeName[MAX_FILE_LENGTH]; swprintf_s(wszPipeName, MAX_
我正在开发一个产品,其中 OpenFileById() 在文件和文件夹上以 ERROR_ACCESS_DENIED 失败,否则可以访问(意味着 CreateFile() 在具有相同访问级别/共享模式等
我还在为钩子(Hook)而苦苦挣扎。 我的目标是: 在notepad.exe中设置一个钩子(Hook) 对其进行子类化(我的最终目标是将 Edit 类子类化并在我自己的窗口中显示内容) 免责声明:我知
在 another question ,我们确定是的,CreateDirectory偶尔会因未记录的 GetLastError 而失败ERROR_ACCESS_DENIED 的值,并且处理这种情况的正
我正在开发一个开源 .NET 程序集 ( WinSCP .NET assembly ),它生成一个 native (C++) 应用程序并通过事件和文件映射对象与其通信。 程序集使用 Process 类
当我们打开一个删除挂起的文件时,Windows 子系统会返回 ERROR_ACCESS_DENIED,即使它们具有 ERROR_DELETE_PENDING 状态。 HANDLE h = Create
我们目前面临调用 WriteFile(或者更确切地说是 CFile::Write - 但只是在内部调用 WriteFile)导致 Win32 错误 5 ERROR_ACCESS_DENIED。 (编辑
先说说我的情况。我在下面描述的问题来自最终用户的机器,我所要做的只是一份 Windows 事件日志的拷贝。我无法访问机器本身来运行任何调试测试。 现在是问题。我有一个这样创建的服务应用程序: SC_H
我有一个调用 CreateProcessWithTokenW 失败,访问被拒绝。任何想法如何调试? 对 CreateProcessWithTokenW 的调用在这里:https://github.co
我在 Windows 平台上运行以下代码。目的是了解特定进程 ID 是否引用现有进程。 BOOL bProcessExists = FALSE; HANDLE hProcHandle = ::Open
我正在尝试将测试模式写入已格式化的 USB 驱动器的每个扇区。有一个逻辑驱动器(例如 h:)。该卷是 FAT 格式的,包含要覆盖的数据。另外,我想覆盖整个物理驱动器。该程序正在以提升的用户权限运行。
出于测试和开发目的,以某种方式模拟(虚假的)文件访问错误到本地 文件会很好。例如,即使一个应用程序已经正确地打开了一个带有适当的限制性共享标志的文件,仍然可能会发生访问该文件的尝试(通过任何 Win3
我用CreateDirectoryW 创建了一个文件夹我无法访问它。我使用 nullptr 作为安全描述符,但出于某种原因它没有复制父文件夹的 ACL,而是使文件夹不可访问。 我无法查看或更改所有者。
我在使用 WinAPI 的 MapViewOfFile 时遇到过这种情况。功能。互联网搜索没有找到任何明显的修复方法,所以我将在这里分享我的问题和解决方案。 考虑以下片段: const char *n
我是一名优秀的程序员,十分优秀!