WinFrom卸载程序怎么删除自己(100分) 如题,不另用其它程序,哪位高人能告诉我吗?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 打包时将msiexec.exe打进去就可以了。这个就是删除程序。在windows系统活页夹中可以找到。 在打包项目中添加文件msiexec.exe(一般在c:\windows\system32(系统目录中)找到)。 在文件系统视图中选择应用程序文件,在msiexec.exe上单击右键选择“创建快捷方式”,重命名快捷方式为“uninst”. 更改此快捷方式Argmuments为“/x {产品ID}”,产品ID的值为打包项目的ProductCode属性值。 那怎么指定程序的ProductCode呢 ProductCode 就是安装包的一个属性值 自身的进程都没有关闭,怎么可能自己删除自己??考虑一下写一个批命令调用系统命令,强行把自己kill掉然后del 创建一个批处理文件让后调用该批处理文件删除自己和该文件批处文件内容如下://其中c:\test.exe换成自己的程序文件路径:deldel "c:\test.exe"if exist "c:\test.exe" goto trydel %0 namespace WindowsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } [DllImport("kernel32.dll")] public static extern uint WinExec(string lpCmdLine, uint uCmdShow); private void button1_Click(object sender, EventArgs e) { string vBatFile = Path.GetDirectoryName(Application.ExecutablePath) + "\\temp.bat"; using (StreamWriter vStreamWriter = new StreamWriter(vBatFile)) { vStreamWriter.Write(string.Format( ":del\r\n" + "del \"{0}\"\r\n" + "if exist \"{0}\" goto try\r\n" + "del %0\r\n", Application.ExecutablePath)); } WinExec(vBatFile, 0); Close(); } }} 經理論推敲跟實際BAT文件測試﹐zswang(伴水清清)(专家门诊清洁工) 的方法是可行的。 運行中的程序不可能自已刪除自已﹐必須通過別的程序或系統命令.所以刪除的方法是﹕1.調用別的程序或系統命令(如批處理文件﹑shell + cmd等)2.結束當前的程序注意一下延時就可以了 是写自杀程序吧?以前我用c++builder实现过,在MAIN中加入): CopyFile(start.c_str(),destfile.c_str(),false); if (__argc== 1) { char cmd[512]; HANDLE org = OpenProcess(SYNCHRONIZE, TRUE, GetCurrentProcessId()); wsprintf(cmd, __TEXT("%s %d \"%s\""), destfile.c_str(),org,start.c_str());// wsprintf(cmd, __TEXT("%s %d \"%s\""), destfile.c_str(),org,start.c_str()); STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); PROCESS_INFORMATION pi; CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); Application->Terminate(); } else { HANDLE hProcessOrig = (HANDLE)_ttoi(__targv[1]); WaitForSingleObject(hProcessOrig, INFINITE); CloseHandle(hProcessOrig); DeleteFile(__targv[2]); }---------------------------用C#也能办到,但有些问题,比如destfile我是用CreateFile生成的临时文件,当窗口句柄dispose后应该自动删除的,在C++中是行的,在C#(xp下)不能自动删除,而且WaitForSingleObject不能等到句柄消失后返回,我现在是用等待的方法做到自杀,如果你的程序要用到DLL,你还得复制dll文件到民一目录 C#模拟get无法传递一些字符 谁有jpg图标的ico传给我一个,谢谢啊 .NET站点使用自定义控件后调试图片不能显示 ASP.NET 2.0网站开发全程解析 c# 怎么实现窗体的任意拖动? ★★★在WinForm中设计自定义控件时,怎么知道是控件是在设计时还是运行行? sql语句——查询某列有重复的值就作为标题,然后将重复的列显示在dataGridView里 在不同操作系统中出现的问题,急........ 高分,模仿IDE界面问题。 用Socket的BeginConnect连接服务器的时候如何判断是否连接成功? c# 游戏开发的前途 事件(event)是不是都应该有个onEvent方法
在文件系统视图中选择应用程序文件,在msiexec.exe上单击右键选择“创建快捷方式”,重命名快捷方式为“uninst”.
更改此快捷方式Argmuments为“/x {产品ID}”,产品ID的值为打包项目的ProductCode属性值。
考虑一下写一个批命令调用系统命令,强行把自己kill掉然后del
让后调用该批处理文件删除自己和该文件批处文件内容如下://其中c:\test.exe换成自己的程序文件路径
:del
del "c:\test.exe"
if exist "c:\test.exe" goto try
del %0
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("kernel32.dll")]
public static extern uint WinExec(string lpCmdLine, uint uCmdShow);
private void button1_Click(object sender, EventArgs e)
{
string vBatFile = Path.GetDirectoryName(Application.ExecutablePath) + "\\temp.bat";
using (StreamWriter vStreamWriter = new StreamWriter(vBatFile))
{
vStreamWriter.Write(string.Format(
":del\r\n" +
"del \"{0}\"\r\n" +
"if exist \"{0}\" goto try\r\n" +
"del %0\r\n", Application.ExecutablePath));
}
WinExec(vBatFile, 0);
Close();
}
}
}
所以刪除的方法是﹕
1.調用別的程序或系統命令(如批處理文件﹑shell + cmd等)
2.結束當前的程序
注意一下延時就可以了
以前我用c++builder实现过,在MAIN中加入):
CopyFile(start.c_str(),destfile.c_str(),false);
if (__argc== 1)
{
char cmd[512];
HANDLE org = OpenProcess(SYNCHRONIZE, TRUE, GetCurrentProcessId());
wsprintf(cmd, __TEXT("%s %d \"%s\""), destfile.c_str(),org,start.c_str());
// wsprintf(cmd, __TEXT("%s %d \"%s\""), destfile.c_str(),org,start.c_str()); STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
Application->Terminate();
}
else
{
HANDLE hProcessOrig = (HANDLE)_ttoi(__targv[1]);
WaitForSingleObject(hProcessOrig, INFINITE);
CloseHandle(hProcessOrig);
DeleteFile(__targv[2]);
}
---------------------------
用C#也能办到,但有些问题,比如
destfile我是用CreateFile生成的临时文件,当窗口句柄dispose后应该自动删除的,在C++中是行的,在C#(xp下)不能自动删除,而且WaitForSingleObject不能等到句柄消失后返回,我现在是用等待的方法做到自杀,如果你的程序要用到DLL,你还得复制dll文件到民一目录