Windows 无声升降箱拆卸

Windows 无声升降箱拆卸,windows,windows-7,uninstallation,windows-shell,silent,Windows,Windows 7,Uninstallation,Windows Shell,Silent,我在中使用以下脚本卸载Dropbox。它在XP和Vista上工作,但在Windows 7/64上失败。它不显示任务栏(通常位于屏幕底部的任务栏),而是显示一个Windows资源管理器窗口,内容为C:/。这与Dropbox无关,因为删除具有基于DLL的shell扩展的其他包也会显示相同的效果 Uninstall.exe /S _?=%CD% taskkill /f /fi "IMAGENAME eq explorer.exe" del DropboxExt.13.dll del DropboxEx

我在中使用以下脚本卸载Dropbox。它在XP和Vista上工作,但在Windows 7/64上失败。它不显示任务栏(通常位于屏幕底部的任务栏),而是显示一个Windows资源管理器窗口,内容为C:/。这与Dropbox无关,因为删除具有基于DLL的shell扩展的其他包也会显示相同的效果

Uninstall.exe /S _?=%CD%
taskkill /f /fi "IMAGENAME eq explorer.exe"
del DropboxExt.13.dll
del DropboxExt64.13.dll
rem start explorer from the root directory so it does not lock this one
start "" /D\ explorer.exe

剧本有什么问题?如何修改它使其在Windows7上也能正常工作

谢谢

编辑:我真的厌倦了这个问题。以下批处理文件以普通用户或“管理员”身份启动:

下面是从我的程序中启动.bat的代码(path=“Uninstall.bat”,只定义了2个新的环境变量):

为什么浏览器认为已经有了任务栏


EDIT2:我现在知道怎么了。关闭资源管理器后,svchost.exe进程将使用以下参数自动启动一个新进程:/factory,{682159d9-c321-47ca-b3f1-30e36b2ec8b9}。GUID用于DesktopExplorerFactory。这可能是COM服务的崩溃保护。我对explorer.exe的调用不会启动新的资源管理器,因为已有一个资源管理器。一两分钟后,如果没有打开任何窗口,此进程将自动关闭。因此,我认为Ben Voigt是对的,“在不注销所有用户的情况下完全卸载shell真的没有什么好方法。”

脚本的问题很简单:除了Windows资源管理器之外,shell还加载到许多应用程序中。每个使用公共打开/保存文件对话框的应用程序都托管shell

要解决如何在不传递打开窗口的参数的情况下控制Windows资源管理器的工作目录的直接问题,只需设置工作目录:

pushd C:\
start explorer.exe
popd
但这仍然不能让您可靠地删除扩展。在不注销所有用户的情况下,完全卸载shell确实没有什么好方法


编辑:您的脚本是否与您杀死的原始explorer.exe以相同的完整性级别运行?同一标高?shell以中等(正常)完整性级别和不相关的令牌运行,您需要与之匹配。

脚本的错误非常简单:除了Windows资源管理器之外,shell还加载到许多应用程序中。每个使用公共打开/保存文件对话框的应用程序都托管shell

要解决如何在不传递打开窗口的参数的情况下控制Windows资源管理器的工作目录的直接问题,只需设置工作目录:

pushd C:\
start explorer.exe
popd
但这仍然不能让您可靠地删除扩展。在不注销所有用户的情况下,完全卸载shell确实没有什么好方法


编辑:您的脚本是否与您杀死的原始explorer.exe以相同的完整性级别运行?同一标高?shell以中等(正常)完整性级别和不相关的令牌运行,您需要匹配它。

值得一提的是,您的命令“start”“/d\explorer.exe”似乎对我来说即使在win7上也可以正常工作,如果它被杀死,它将重新启动任务栏和桌面

然而,你并不真正需要“开始”。您可以从批处理文件中调用“explorer.exe”,它不会阻塞。不确定这是否有什么不同,但值得一试

顺便说一下,如果它不起作用。。。如果使用ctrl+shift+esc打开任务管理器并执行文件->运行“资源管理器”,受影响的计算机上会发生什么情况?这会启动任务栏还是会再次生成资源管理器窗口?如果这产生了预期的结果,那么批处理文件或其环境可能有问题。例如不以当前登录用户的身份运行,等等


如果周围没有自己进程的其他实例,资源管理器应该启动任务栏。shell本身可以加载到其他进程中这一事实并不重要。。。您可以杀死所有资源管理器实例,在Excel中打开“文件打开”对话框,然后通过从任务管理器运行explorer.exe来重新启动任务栏。

值得一提的是,您的命令“start”“/d\explorer.exe”对我来说似乎工作正常,即使在win7上,如果被杀死,它也会重新启动任务栏和桌面

然而,你并不真正需要“开始”。您可以从批处理文件中调用“explorer.exe”,它不会阻塞。不确定这是否有什么不同,但值得一试

顺便说一下,如果它不起作用。。。如果使用ctrl+shift+esc打开任务管理器并执行文件->运行“资源管理器”,受影响的计算机上会发生什么情况?这会启动任务栏还是会再次生成资源管理器窗口?如果这产生了预期的结果,那么批处理文件或其环境可能有问题。例如不以当前登录用户的身份运行,等等


如果周围没有自己进程的其他实例,资源管理器应该启动任务栏。shell本身可以加载到其他进程中这一事实并不重要。。。您可以关闭所有资源管理器实例,在Excel中打开“文件打开”对话框,然后通过从任务管理器运行explorer.exe重新启动任务栏。

尝试替换以下行

start "" /D\ explorer.exe
用这个

start "" /D\ %SystemRoot%\explorer.exe
这应该在不带参数的情况下运行资源管理器

问题是,在没有完整路径的情况下运行资源管理器会使用您指定的参数运行它:

/factory,{682159d9-c321-47ca-b3f1-30e36b2ec8b9}

但我不知道为什么会发生这种情况。

尝试替换以下行

start "" /D\ explorer.exe
用这个

start "" /D\ %SystemRoot%\explorer.exe
这应该在不带参数的情况下运行资源管理器

问题是,在没有完整路径的情况下运行资源管理器会使用您指定的参数运行它:

/factory,{682159d9-c321-47ca-b3f1-30e36b2ec8b9}

但是我不知道为什么会发生这种情况。

pushd/popd没有帮助,不幸的是我也已经知道如何控制Windows资源管理器的工作目录:请参阅我问题中的“/D\”。我的问题只是关于Windows7。关于“shell被加载到许多应用程序中”你是对的。例如,Filezilla客户端加载SHELL32.DLL whi