我用C写了一段小代码,想尝试通过Schtasks运行它。启动了,但是需要管理员权限的winapi功能不起作用。
对于
cmd
,我使用此提示(我使用管理员权限启动它):
schtasks /create /ru SYSTEM /tn TestTask /tr "C:\Users\Koalko\Desktop\main.exe" /sc ONSTART
我还尝试将我的个人资料添加到管理员组,但这没有改变任何内容:
net localgroup Administrators Koalko /add
我的C代码:
#include <stdio.h>
#include <Windows.h>
int main(int argc, char* argv[]) {
for (int i = 0; i <= 5; i++) {
printf("\rBLOCK INPUT AFTER %d SECONDS", 5-i);
Sleep(1000);
}
printf("\nBLOCK INPUT ON 5 SECONDS!!!\n");
BlockInput(TRUE);
Sleep(5000);
BlockInput(FALSE);
printf("RELEASE INPUT\n");
getchar();
return 0;
}
我不认为代码有问题。
非常感谢 IInspectable 和 Remy Lebeau。 问题是该程序正在非交互式会话中运行,因此无法执行
BlockInput
。
查看 schtasks
文档后,我发现 /IT
属性允许任务在交互式会话中运行。
需要注意的是,该属性不适用于 SYSTEM
用户,并且不使用 /sc ONSTART
执行。
schtasks /create /ru Koalko /tn TestTask /tr "C:\Users\Koalko\Desktop\main.exe" /sc ONLOGON /RL HIGHEST /IT /f