2

我们更改了 WPF 应用程序的徽标图标,然后更改了主可执行文件的图标。在我的装有 Win 7 的 PC 上,图标缓存的刷新存在问题:主可执行文件的桌面快捷方式,以及可执行文件图标的预览,在 Windows 资源管理器中仍然显示旧图标。即使重新启动系统,问题仍然存在。

我发现运行这个命令可以解决问题:

ie4uinit.exe-ClearIconCache

我的问题是我无法从代码中运行它。我做了两次尝试。


第一的:

Dim si As New ProcessStartInfo()
si.CreateNoWindow = False
si.UseShellExecute = False
si.FileName = "ie4uinit.exe"
si.WindowStyle = ProcessWindowStyle.Hidden
si.Arguments = "-ClearIconCache"
Dim p As Process = Process.Start(si)

错误:“找不到指定的文件” - 我尝试输入完整路径,但仍然找不到文件


第二:

我把命令放在一个批处理文件中

Dim si As New ProcessStartInfo("C:\test.bat")
si.UseShellExecute = False
si.RedirectStandardError = True
si.RedirectStandardInput = True
si.RedirectStandardOutput = True
si.CreateNoWindow = True
si.ErrorDialog = False
si.WindowStyle = ProcessWindowStyle.Hidden
Dim p As Process = Process.Start(si)

这次我没有得到任何错误,但甚至没有达到预期的效果。如果我双击批处理文件,一切正常。

我想调整其中一个程序,否则会找到一个新程序来清除 Windows 图标缓存。C# 或 Visual Basic 并不重要... Pileggi

4

5 回答 5

1

我找到了解决方案:我必须为“任何 CPU”构建运行批处理文件的可执行文件,否则它没有足够的权限来运行 ie4unit。

在我尝试为“x86”构建之前,我在 Win7 64 位上运行该进程......

于 2013-12-26T13:54:53.990 回答
1

也许它没有在路径中搜索它尝试使用:作为路径“%WINDIR%\System32\ie4uinit.exe”,如果这不起作用尝试“C:\Windows\System32\ie4uinit.exe”

于 2013-09-23T21:00:28.697 回答
0

你可以试试这个:

Dim objProcess As System.Diagnostics.Process
objProcess = New System.Diagnostics.Process()
objProcess.StartInfo.FileName = "ie4uinit.exe"
objProcess.StartInfo.Arguments = "-ClearIconCache"
objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
objProcess.Start()
objProcess.WaitForExit()
objProcess.Close()
于 2014-04-28T22:58:25.377 回答
0
Enables or disables file system redirection for the calling thread.


[DllImport("Kernel32.dll")]
private static extern bool Wow64EnableWow64FsRedirection(bool Wow64FsEnableRedirection);  

//.....
Wow64EnableWow64FsRedirection(false);
Dim p As Process = Process.Start(si)
Wow64EnableWow64FsRedirection(true);
于 2014-04-24T09:35:03.863 回答
0

我有一个类似的问题,试图从 Inno 安装程序调用 ie4uinit。PATH 确实包含正确的系统目录;但是,执行“dir”并没有显示该文件存在。事实上,有超过 100 个 *.exe 文件无法从执行该命令的任何 shell 中找到。打开资源管理器或命令窗口会显示文件在那里(我们当然知道)。我认为这是一个权限或访问问题。我没有耐心进一步追踪它,只是将 ie4uinit.exe 复制到本地目录并让我的安装程序在那里执行它。

于 2013-12-20T02:56:28.927 回答