要在应用程序登录时启用我的应用程序以管理员权限启动,我在任务计划程序中使用任务。它工作正常。大多。现在我收到了错误报告,说这失败了:
rootFolder->RegisterTaskDefinition( _bstr_t(name.toWideCharPointer()), task,
TASK_CREATE_OR_UPDATE, _variant_t(L"Builtin\\Administrators"), _variant_t(),
TASK_LOGON_GROUP, _variant_t(L""), ®isteredTask) -> 0x80070534
0x80070534似乎意味着“帐户名和安全ID之间没有映射”。我跟着(几乎是逐字逐句)的例子: http://msdn.microsoft.com/en-us/library/aa381911(v=VS.85).aspx
想法出了什么问题,以及如何解决?应用程序具有清单集,因此用户需要管理员才能运行它。
问题:“Builtin \\ Administrators”组,它是语言相关的,不是吗?我认为有问题的用户可能有一个非英语的Windows 7.如果是这样的话我想它会更好地指定“S-1-5-32-544”(http://support.microsoft.com/kb/243330)
更新:所以显式调用如下:
rootFolder->RegisterTaskDefinition(
_bstr_t(name.toWideCharPointer()),
task,
TASK_CREATE_OR_UPDATE,
_variant_t(L"S-1-5-32-544"), // Language independent "BUILTIN\Administrators"
_variant_t(),
TASK_LOGON_GROUP,
_variant_t(L""),
®isteredTask)
确保使用提升的权限执行应用程序,否则该调用将失败。
答案 0 :(得分:3)
问题确实在于_variant_t(L"Builtin\\Administrators")
参数,它是英文版Windows的硬编码。通过使用与语言无关的安全标识符“S-1-5-32-544”(http://support.microsoft.com/kb/243330),问题得以解决。
更新:所以显式调用如下:
rootFolder->RegisterTaskDefinition(
_bstr_t(name.toWideCharPointer()),
task,
TASK_CREATE_OR_UPDATE,
_variant_t(L"S-1-5-32-544"), // Language independent "BUILTIN\Administrators"
_variant_t(),
TASK_LOGON_GROUP,
_variant_t(L""),
®isteredTask)
确保使用提升的权限执行应用程序,否则调用将失败。
答案 1 :(得分:1)
花了一些时间后,我发现需要进行更多修改而不仅仅是_variant_t(L"S-1-5-32-544")
才能使"Logon Trigger Example (C++)" example工作。
所有细节都可以在this answer找到。