Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式清除win 7中的图标缓存-使用C#或Visual Basic执行ie4uinit.exe-ClearIconCache_C#_Vb.net_Caching_Batch File_Icons - Fatal编程技术网

以编程方式清除win 7中的图标缓存-使用C#或Visual Basic执行ie4uinit.exe-ClearIconCache

以编程方式清除win 7中的图标缓存-使用C#或Visual Basic执行ie4uinit.exe-ClearIconCache,c#,vb.net,caching,batch-file,icons,C#,Vb.net,Caching,Batch File,Icons,我们更改了WPF应用程序的徽标图标,然后更改了主可执行文件的图标。在装有Win 7的我的电脑上,图标缓存的刷新出现问题:Windows资源管理器中主可执行文件的桌面快捷方式和可执行文件图标的预览仍显示旧图标。 即使重新启动系统,问题仍然存在 我发现运行此命令可以解决问题: ie4uinit.exe-ClearIconCache 我的问题是我不能从代码运行它。我试了两次 第一: Dim si As New ProcessStartInfo() si.CreateNoWindow = False

我们更改了WPF应用程序的徽标图标,然后更改了主可执行文件的图标。在装有Win 7的我的电脑上,图标缓存的刷新出现问题: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

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

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

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

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

您可以尝试以下方法:

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);
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()

有关发生这种情况的原因以及解决方法,请参阅: