【问题标题】:Call a function/Api at the time of program uninstallation程序卸载时调用函数/Api
【发布时间】:2012-07-14 09:37:30
【问题描述】:

如何实现以下场景,

1) 应该只有一个 exe 应该执行一些代码

2) 此外,它应该在添加/删除程序中添加一个条目

3)当我从添加/删除程序中卸载条目时,我需要调用一些函数/api来完成卸载。

【问题讨论】:

    标签: c# .net c windows winapi


    【解决方案1】:

    如果您需要的“调用某些函数/api”就像在下次重新启动时删除文件一样简单 - 将其设置为“重新启动时删除”,如 here 所述:

    Windows 注册表编辑器版本 5.00 [HKEY_CLASSES_ROOT*\shell\Delete on reboot\command] @="CMD /E:OFF /C REG ADD >HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce /v \"Del %1 >OnNextReboot\" /d ^\"cmd.exe /c DEL /F /Q \\"%1\\"\" /f\"" [HKEY_CLASSES_ROOT*\shell\打开] [HKEY_CLASSES_ROOT\Folder\shell\Delete on reboot\command] @="CMD /E:OFF /C REG ADD >HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce /v \"Del %1 >OnNextReboot\" /d ^\"cmd.exe /c RD /S /Q \\"%1\\"\" /f\""

    要在重新启动时删除注册表项,请使用此(解释为 here):

    [HKEY_CLASSES_ROOT*\shell\Delete on reboot\command] @="CMD /E:OFF /C REG ADD >HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce /v \"Del %1 >OnNextReboot\" /d ^\"cmd.exe /c DEL /F /Q \\"%1\\"\" /f\"" [HKEY_CLASSES_ROOT*\shell\打开] [HKEY_CLASSES_ROOT\Folder\shell\Delete on reboot\command] @="CMD /E:OFF /C REG ADD >HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce /v \"Del %1 >OnNextReboot\" /d ^\"cmd.exe /c RD /S /Q \\"%1\\"\" /f\""

    【讨论】:

    • 我不想在重启时删除文件,我想调用一些函数调用或 Api。 (例如,需要从证书存储中删除一个证书,或者调用一个exe)
    • 这些都可以通过你的程序来完成,不是吗?要么编写一个单独的二进制文件在“卸载时”运行,要么让你的主二进制文件采用一种特殊的卸载模式(使用命令行开关可能是最简单的)。这样,您在卸载期间所做的就是调用必要的清理子例程,然后继续进行常规卸载过程。
    • 是的,我可以用我的程序做到这一点。我的问题是如何在控制面板中卸载我的包时自动调用该二进制文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多