在我的程序中,我在当前用户下创建了一个注册表项。该程序由具有最高权限的任务计划程序运行(S-1-5-32-545)。
在我的卸载自定义操作中,我有代码删除此密钥。
当我以管理员身份运行时,删除密钥的代码有效。
从卸载自定义操作运行时,代码不起作用。
我猜测它在后一种情况下不起作用的原因是因为当执行卸载程序时当前用户与本地管理员执行代码时不同。
如何从卸载自定义操作运行时删除此注册表项?如何将卸载自定义操作指向正确的当前用户?
答案 0 :(得分:1)
我基本上不熟悉Windows 10中任务调度程序的使用。我在Windows 2000中使用了很多东西,然后它非常原始 - 严重缺乏我需要的功能。
我会尝试为你添加一些观察结果,如果它不是一个答案,请耐心等待。如果是这种情况,请更新您的问题并提供更多详细信息 - 以便我们准确了解您的需求。
我想知道你是如何创建计划任务的? 您是否直接攻击注册表?您应该使用schtasks.exe通过WiX软件包的命令行创建和删除它。以下是他们处理相同问题的一个问题/答案: WIX Create Scheduled Task 。
你已经知道了这一点,但这也适用于其他人:
taskschd.msc
并按 Enter 似乎计划任务不存储在注册表(HKCU)的用户部分中,而是存储在磁盘上和注册表(HKLM)的每机器部分中:Where does Windows store the settings for Scheduled Tasks console?这应该意味着他们是只需在卸载时删除它们,即可删除计算机上所有用户。 您的HKCU注册表项如何进入图片? Here is the MSDN page on Schtasks.exe。
仅作为记录,有一些替代方案可以将您的应用程序作为计划任务运行,这可能比计划任务更好或更容易:
在注册表中注册以在启动/登录时启动。
Drivers
,services
,scheduled tasks
,IE
,WinLogon
等等。也许取消选中"Hide" entries
中的Options menu
,使其真正被相关密钥的数量(恶意软件向量堆)所困扰。警告:此工具不适用于普通用户。如果你不知道你在禁用什么,它就拥有你需要用脚射击自己所需的所有绳索。 仅限开发人员/系统管理员。奇怪的是,它看起来并不像工具中列出了用户配置文件中的启动文件夹 - 我想它只是一个与基于注册表的启动器有关的工具。我发现的截图: