C# 在程序卸载时调用函数/Api

C# 在程序卸载时调用函数/Api,c#,.net,c,windows,winapi,C#,.net,C,Windows,Winapi,如何实现以下情景 1) 应该只有一个exe可以执行一些代码 2) 此外,它还应该在添加/删除程序中添加一个条目 3) 从“添加/删除程序”卸载条目时,我需要调用一些函数/api来完成卸载。如果您需要的“调用一些函数/api”与在下次重新启动时删除文件一样简单,请将其设置为“重新启动时删除”,如下所述: Windows注册表编辑器5.00版 [HKEY\U CLASSES\U ROOT*\shell\Delete on reboot\command] @=“CMD/E:OFF/C REG ADD>

如何实现以下情景

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

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

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

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

Windows注册表编辑器5.00版 [HKEY\U CLASSES\U ROOT*\shell\Delete on reboot\command] @=“CMD/E:OFF/C REG ADD>HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce/v\“Del%1>OnNextReboot\”/d^\“CMD.exe/C Del/F/Q\\\\%1\\\”/F\” [HKEY\U CLASSES\U ROOT*\shell\Open] [HKEY\U CLASSES\U ROOT\Folder\shell\Delete on reboot\command] @=“CMD/E:OFF/C REG ADD>HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce/v\“Del%1>OnNextReboot\”/d^\“CMD.exe/C RD/S/Q\\\\%1\\\”/f\”

要在重新启动时删除注册表项,请使用以下命令(已解释):

[HKEY\U CLASSES\U ROOT*\shell\Delete on reboot\command] @=“CMD/E:OFF/C REG ADD>HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce/v\“Del%1>OnNextReboot\”/d^\“CMD.exe/C Del/F/Q\\\\%1\\\”/F\” [HKEY\U CLASSES\U ROOT*\shell\Open] [HKEY\U CLASSES\U ROOT\Folder\shell\Delete on reboot\command] @=“CMD/E:OFF/C REG ADD>HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\RunOnce/v\“Del%1>OnNextReboot\”/d^\“CMD.exe/C RD/S/Q\\\\%1\\\”/f\”


我不想在重新启动时删除文件,我想调用一些函数调用或Api。(例如,需要从Certificate存储中删除证书,或调用exe)这些都可以由您的程序完成,不是吗?要么编写一个单独的二进制文件在“卸载时”运行,要么让主二进制文件采用一种特殊的卸载模式(使用命令行开关可能是最简单的)。这样,您在卸载过程中要做的就是调用必要的清理子例程,然后继续常规卸载过程。是的,我可以用我的程序来完成。我这里的问题是,当我在“控制面板”中卸载软件包时,如何自动调用该二进制文件?