windows-services – 卸载后无法删除服务可执行文件
发布时间:2020-12-14 05:29:43 所属栏目:Windows 来源:网络整理
导读:我正在卸载这样的服务: using (AssemblyInstaller installer = new AssemblyInstaller(serviceFileName,new String[] { })){ installer.UseNewContext = true; installer.Uninstall(null);} 哪个工作正常,但后来我尝试做一个Directory.Delete,它抛出一个异
我正在卸载这样的服务:
using (AssemblyInstaller installer = new AssemblyInstaller(serviceFileName,new String[] { })) { installer.UseNewContext = true; installer.Uninstall(null); } 哪个工作正常,但后来我尝试做一个Directory.Delete,它抛出一个异常,说拒绝访问服务的可执行文件.不久之后,我可以在Windows资源管理器中手动删除该文件. 我的应用程序由请求管理员访问权限的安装程序运行,因此我假设它拥有该文件的权限.实际上,它删除了该目录中的所有其他文件,它只是无法获取该文件.我也检查过,文件不是只读的. 有什么想法我无法删除这个文件? 解决方法
事实证明,该文件的句柄保持打开状态.解决方案是创建一个安装程序运行的新AppDomain,并在尝试删除之前将其关闭:
var domain = AppDomain.CreateDomain("MyDomain"); using (AssemblyInstaller installer = domain.CreateInstance(typeof(AssemblyInstaller).Assembly.FullName,typeof(AssemblyInstaller).FullName,false,BindingFlags.Public | BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.ExactBinding,null,new Object[] { serviceFileName,new String[] { } },null).Unwrap() as AssemblyInstaller) { installer.UseNewContext = true; installer.Uninstall(null); } AppDomain.Unload(domain); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows API一日一练 61 GetDriveType函数
- cygwin – cygpath无法将Windows路径转换为Linux路径
- windows-phone-7 – ApplicationBar背后的背景图片
- 如何在Windows上的控制台输出中断(设置断点)?
- windows – 有没有理由让SMB通过互联网?
- windows-7 – Windows 7本地组Power Users实际上做了什么?
- 是否有用于Microsoft Word的嵌入式可视(PHP)解析器?
- windows-7 – GitHub noobian,我应该安装msysGit还是Cygwin
- win10安装gitLab
- windows – 使用组策略加入无线网络时,是否可以指定WPA2密码
推荐文章
站长推荐
热点阅读