关于#windows#的问题:桌面加载异常

在试用软件或切换页面一段时间后回到桌面,图标会加载不出来。手动刷新后能够恢复正常。但是再使用一段时间又会如此。尝试过删除桌面加载的缓存文件,但是没有效果。

img

win11配件要求高,反应不过来

【相关推荐】



  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/679311
  • 这篇博客也不错, 你可以看下Windows语言栏不见了,解决办法。任务栏的语言栏没了、不显示了。语言栏异常导致不能输入中文。默认中文输入法设置。
  • 除此之外, 这篇博客: Windows简单驱动编程(一):内核中常见的字符串操作中的 说明:环境部分大家自己装,网上教程很多,这里就不重复了。由于自己内核,驱动这方面知识缺乏,怕工作中偶尔碰见这样的病毒,绕不过的,只得学!大家加油!直接贴代码,注释我都标好了。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    #include <ntddk.h>
    
    #define BUFFER_SIZE 256
    
    //驱动卸载函数,不写的话驱动无法卸载,只能重启卸载
    NTSTATUS Unload(PDRIVER_OBJECT driver)
    {
    	DbgPrint("driver unload success.....\n");
    	return STATUS_SUCCESS;
    }
    
    
    //入口点,类似于mian(),双击调试时windbg可以下断点:driver_name!DriverEntry,就可以断在这里了
    NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
    {
    	//内核调试输出,类似于printf,DbgPrint和KdPrint一样,注意参数,KdPrint在发布版会被优化掉
    	/*
    	DbgPrint("this is my first driver.....\n");
    	*/
    
    	//下面是内核中的字符串类型,内核中常用的是unicode类型的字符串,使用时得用RtlInitUnicodeString()函数初始化,宽字符长度前面加个L
    	/*
    	CHAR* char_string = "hello CHAR";
    	WCHAR* wchar_string = L"hello WCHAR";
    	UNICODE_STRING unicode_string;
    	RtlInitUnicodeString(&unicode_string, L"hello unicode string");
    	KdPrint(("%s", char_string));
    	KdPrint(("%S", wchar_string));
    	KdPrint(("%wZ", &unicode_string));
    	*/
    
    	//下面是字符串的常见操作
    	//1.字符串复制,记得初始化目标buffer
    	/*
    	UNICODE_STRING source_string;
    	UNICODE_STRING dest_string;
    	RtlInitUnicodeString(&source_string, L"this is source string");
    	//分配内存
    	dest_string.Buffer = (PWSTR)ExAllocatePool(PagedPool, BUFFER_SIZE);
    	dest_string.MaximumLength = BUFFER_SIZE;
    	//复制到目标buffer
    	RtlCopyUnicodeString(&dest_string, &source_string);
    	KdPrint(("dest string is :%wZ", &dest_string));
    	//记得释放开辟的buffer
    	RtlFreeUnicodeString(&dest_string);
    	*/
    
    	//2.字符串连接,使用RtlAppendUnicodeToString()函数
    	/*
    	UNICODE_STRING source_string;
    	UNICODE_STRING dest_string;
    	RtlInitUnicodeString(&source_string, L"hello wait append : ");
    	dest_string.Buffer = (PWSTR)ExAllocatePool(PagedPool, BUFFER_SIZE);
    	dest_string.MaximumLength = BUFFER_SIZE;
    	RtlCopyUnicodeString(&dest_string, &source_string);
    
    	if (STATUS_BUFFER_TOO_SMALL == RtlAppendUnicodeToString(&dest_string, L"append string"))
    	{
    		KdPrint(("STATUS_BUFFER_TOO_SMALL"));
    	}
    	KdPrint(("%wZ", &dest_string));
    	RtlFreeUnicodeString(&dest_string);
    	*/
    	
    	//3.字符串比较,使用RtlCompareUnicodeString()函数
    	/*
    	UNICODE_STRING compare_string_1;
    	UNICODE_STRING compare_string_2;
    	int return_num = 0;
    	RtlInitUnicodeString(&compare_string_1, L"I am string 1");
    	RtlInitUnicodeString(&compare_string_2, L"I am string 2");
    
    	//TRUE:区分大小写,FALSE:不区分大小写
    	return_num = RtlCompareUnicodeString(&compare_string_1, &compare_string_2, TRUE);
    	if (return_num == 0)
    	{
    		KdPrint(("字符串1等与字符串2\n"));
    	}
    	if (return_num > 0)
    	{
    		KdPrint(("字符串1大于字符串2\n"));
    	}
    	if (return_num < 0)
    	{
    		KdPrint(("字符串1小于字符串2\n"));
    	}
    	*/
    
    	//定义驱动卸载函数
    	driver->DriverUnload = Unload;
    	return STATUS_SUCCESS;
    }
    


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^