C++ Logon task schedule Error: No Mapping between account names and security ids was done(C++ 登录任务计划错误:未完成帐户名称和安全 ID 之间的映射)
问题描述
我正在尝试在 Windows 7 上使用 C++ 编写一个 Windows 登录触发任务.
I am trying to write a windows Logon trigger task using C++ on Windows 7.
我正在关注 本微软教程一>.
但是我在将任务保存到根文件夹时遇到了问题.这里:
But I am facing problem in saving the task to root folder. Here:
// ------------------------------------------------------
// Save the task in the root folder.
IRegisteredTask *pRegisteredTask = NULL;
hr = pRootFolder->RegisterTaskDefinition(
_bstr_t( wszTaskName ),
pTask,
TASK_CREATE_OR_UPDATE,
_variant_t(L"Builtin\Administrators"),
_variant_t(),
TASK_LOGON_GROUP,
_variant_t(L""),
&pRegisteredTask);
hr 出现错误的地方:未完成帐户名称和安全 ID 之间的映射
Where the hr is getting error : No Mapping between account names and security ids was done
我还尝试将 _variant_t(L"Builtin\Administrators") 替换为 _variant_t(L"S-1-5-32-544") 到 NULL out语言硬编码问题,仍然没有运气.
I also tried replacing _variant_t(L"Builtin\Administrators") with _variant_t(L"S-1-5-32-544") to NULL out language hard coding issue, still No luck.
我怎样才能让它发挥作用?
How can I make it work?
推荐答案
我怀疑您拥有的演示代码是 XP 时代的,并且尚未更新以匹配 Vista/Win7 规则.
I suspect the demo code you have is XP-era, and hasn't been updated to match the Vista/Win7 rules.
我在设置登录触发器后更新了示例以设置 LUA 设置,它似乎有效:
I updated the sample to set the LUA settings after setting the logon trigger, and it seems to work:
hr = pLogonTrigger->put_UserId(_bstr_t(L"DOMAINusername"));
if (FAILED(hr))
{
printf("
Cannot add user ID to logon trigger: %x", hr);
CoUninitialize();
return 1;
}
//*** NEW**** Set the LUA settings
CComPtr<IPrincipal> pPrincipal;
hr = pTask->get_Principal(&pPrincipal);
if (SUCCEEDED(hr))
{
hr = pPrincipal->put_RunLevel(TASK_RUNLEVEL_LUA);
}
if (SUCCEEDED(hr))
{
hr = pPrincipal->put_GroupId(_bstr_t(L"Builtin\Administrators"));
}
if (FAILED(hr))
{
printf("
Cannot set runlevel/groupid: %x", hr);
CoUninitialize();
return 1;
}
如果你需要它在 XP 上运行,那么 get_Principal 调用很可能会失败,所以让这个失败通过.
If you need it to run on XP, then it's likely that the get_Principal call will fail, so let that failure through.
这篇关于C++ 登录任务计划错误:未完成帐户名称和安全 ID 之间的映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:C++ 登录任务计划错误:未完成帐户名称和安全 I
基础教程推荐
- 为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如 2022-09-16
- GDB 显示调用堆栈上函数地址的当前编译二进制文 2022-09-05
- 我应该对 C++ 中的成员变量和函数参数使用相同的名称吗? 2021-01-01
- 通过引用传递 C++ 迭代器有什么问题? 2022-01-01
- 初始化列表*参数*评估顺序 2021-01-01
- 为什么派生模板类不能访问基模板类的标识符? 2021-01-01
- CString 到 char* 2021-01-01
- 非静态 const 成员,不能使用默认赋值运算符 2022-10-09
- 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2021-01-01
- 如果我为无符号变量分配负值会发生什么? 2022-01-01
