还是用目录链接的方法比较好. |
本帖最后由 朱玛12345678 于 2019-1-27 12:07 编辑 junyee 发表于 2019-1-27 11:04 不建议使用链接的方式重定向目录,WIN10 v1809刚发布的时候就是因为使用了这个才导致的用户数据丢失。 这个问题的详细解析可以自己去看一下:http://weibo.com/3139784387/GDeev6vWu 因为目录符号链接的问题在历史上发生过类似的BUG不是一次两次了,而且目录符号链接还有一个限制就是需要NTFS文件系统的支持,也就是说如果在exFAT文件系统上是用不了的,所以这个方法并不如直接改注册表键值那样能够通用。 |
sairen139 发表于 2019-1-27 12:25 没单独改过这个文件的路径,不过我倒是把整个系统的路径全给改了可以实现。 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=412683 刚在注册表搜到了个键值,不知道是不是你自己去看看吧: |
本帖最后由 sairen139 于 2019-1-27 12:29 编辑 朱玛12345678 发表于 2019-1-27 12:03 用户名下面的NTuser.dat(作用之一是保持桌面图标和文件的位置和顺序)除了用mklink转移到非系统盘外,请教你能找到用户名下面的NTuser.dat的注册表的具体位置吗?可以单独修改注册表指定用户名下面的NTuser.dat到非系统盘上某个文件夹里吗?只有把用户名文件夹改路径这个方法吗? |
感谢分享 |
很早以前在win7里试过,和程序相关的强制做硬链接会有很多问题,只改外壳会好一点. pin ,sendto,jumplist,startmenu,quicklaunch这些 |
1、win7桌面背景保存位置:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Themes 可以在这里找到当前桌面背景图片的保存位置。 2、系统自带的壁纸在C:\WINDOWS\Web\Wallpaper文件夹下。 这里存储的是系统自带的壁纸,可以根据个人需要将下载的壁纸放入这个文件夹。 然后返回Win7“桌面背景”界面,这里会显示所有的壁纸。 |
sairen139 发表于 2019-1-28 11:05 快速让你解决Win10注册表解决“固定到任务栏”的应用程序快捷方式 时间:2016-06-03 来源:http://www.Ghost123.com/ 游览量: 2320 次 从Windows7开始,微软引入了把常用的应用程序固定到任务栏这种设计,到了Windows10中则更为灵活方便,为我们的日常操作带来了极大的方便。例如把常用的IE浏览器、记事本、截图软件固定到了任务栏中。 还可以拓展与大家分享了《把“控制面板、这台电脑、回收站、网络、用户文件夹”固定到Win10任务栏》和《把文件夹固定到Win10任务栏》的技巧。可问题是,一旦重装系统之后,这些固定到任务栏的快捷方式会全部消失,我们还要重新一个一个地设置“固定到任务栏”。那么今天Microsoft酋长就与你分享一下可以备份/还原这些固定到任务栏的应用程序快捷方式的方法。 Win10注册表解决“固定到任务栏”的应用程序快捷方式操作如下: 1:按 Win + R 组合快捷键调出“运行”对话框,输入以下路径: %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 2:确定,打开“固定到任务栏”的快捷方式所在的文件夹。 3:把这些快捷方式复制到非系统盘的某个位置备份。 4:备份“固定到任务栏”的注册表信息 5:同时我们还要备份一下相应的注册表信息。 6:首先打开Win10任务管理器备用,然后打开注册表编辑器,定位至(快速定位到注册表编辑器某一项的技巧) HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband 然后在Taskband项上点击右键,选择“导出”。 7:把Taskband项的注册信息导出为reg格式的注册表备份文件。建议把reg文件和刚才的8:备份的快捷方式放到同一目录下,以方便之后恢复。 9:还原“固定到任务栏”信息。 重装系统之后,我们首先把之前备份的快捷方式重新复制回原来的路径。然后再把备份的注册表信息重新导入注册表即可 |
本帖最后由 sairen139 于 2019-1-30 20:09 编辑 修改注册表更换桌面壁纸的方法: https://jingyan.baidu.com/article/046a7b3e9ea0f8f9c27fa9a7.html 按下win+R快捷键,打开运行对话框,输入regedit点击确定,打开注册表编辑器。 2/6 在注册表编辑器中依次展开 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ 并且在该注册表项下建一个名为 System 的项(如果在Policies下已经存在System项,则不需要进行此步) 3/6 在 System 项下右键新建两个“字符串值“,名为 Wallpaper 和 WallpaperStyle 4/6 右键单击Wallpaper打开”编辑字符串“对话框,在”数值数据“栏输入桌面壁纸图片的路径,如图所示,然后点击确定即可。 5/6 也可以通过此方法修改WallpaperStyle中”数值数据“的值,WallpaperStyle 有三个可以定义的值: 0=居中 ,1=平铺 ,2=拉伸, 6/6 修改完成后重启电脑就能看到新换的桌面壁纸了! 注意事项 如果 Wallpaper 字串符值为空,则桌面背景固定为添加该字串符值前所设的图片,且在个性化设置选项卡中的“背景”框中呈不可操作状态。 若要恢复初始状态,删除Wallpaper和WallpaperStyle即可,或者直接删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\下的System项即可! |
magicgenius 发表于 2019-1-28 08:04 哦!就是在系统启动完成就可以? |
朱玛12345678 发表于 2019-1-27 12:03 https://blog.csdn.net/cfqcfqcfqcfqcfq/article/details/79555034 |
什么是Windows中的NTUSER.DAT文件? 文件资源管理器窗口显示NTUSER.DAT文件 每个用户配置文件中隐藏的是名为NTUSER.DAT的文件。 此文件包含每个用户的设置和首选项,因此您不应删除它,也不应编辑它。 Windows会自动为您加载,更改和保存文件。 NTUSER.DAT包含您的用户配置文件设置 每次更改Windows和已安装程序的外观和行为时,无论是您的桌面背景,显示器分辨率,还是默认的打印机,Windows都需要在下次加载时记住您的首选项。 Windows通过首先将该信息存储到HKEY_CURRENT_USER配置单元中的注册表来实现此目的。 然后,当您注销或关闭时,Windows会将该信息保存到NTUSER.DAT文件中。 下次登录时,Windows会将NTUSER.DAT加载到内存,并且所有首选项都会再次加载到注册表。 此过程允许您对用户配置文件特有的个人设置,例如您选择的桌面背景。 名称NTUSER.DAT是Windows NT的延迟,最初是在Windows 3.1中引入的。 Microsoft将DAT扩展名与任何包含数据的文件一起使用。 每个用户都有一个NTUSER.DAT文件 Windows并不总是完全支持用户配置文件。 在早期版本中,当您启动Windows时,计算机的每个用户都会看到相同的桌面,文件和程序。 现在Windows更好地支持同一台机器上的多个用户,它通过在每个用户的配置文件中放置一个NTUSER.DAT文件来实现。 您可以通过打开文件资源管理器并浏览到: C:\用户\ *。* YourUserName 文件资源管理器窗口显示用户文件夹 或输入: %用户资料% 进入File Explorer的地址栏,然后按Enter键。 如果您还没有看到NTUSER.DAT,请不要担心。 Microsoft不打算您编辑或删除此文件,因此它们会隐藏它。 您可以打开“ 显示隐藏文件”选项以使文件可见。 你可能会注意到除了NTUSER.DAT文件之外,还有一个或多个ntuser.dat.LOG文件。 每次进行更改时,Windows都会将新的首选项保存到NTUSER.DAT文件中。 但首先,它会复制并将其重命名为ntuser.dat.LOG(加上递增的数字)以备份以前的设置。 即使微软知道你应该总是备份你的设置和文件 。 不要删除NTUSER.DAT文件 您不应该删除您的NTUSER.DAT文件。 由于Windows依赖于它来加载您的设置和首选项,因此删除它会破坏您的用户配置文件。 当您下次登录时,您会看到Windows无法登录您的帐户的提示。 错误消息指出您无法登录自己的帐户 尽管建议退出然后重新登录可能会解决问题,但您会再次看到相同的消息。 如果您尝试创建一个简单的NTUSER.DAT文件来替换丢失的实例,您将在首次设置对话框中遇到循环,Windows将永远不会完成登录。 循环动画GIF显示“嗨,我们正在为你准备好消息”一遍又一遍 NTUSER.DAT文件通常不是一个大文件,在我们的一台新计算机上介于3兆字节之间,在我们使用了几年的PC上介于17兆字节之间。 删除它通常不会重获太多空间,但结果可能是灾难性的。 如果不需要用户配置文件,最好通过Windows 删除用户帐户 。 您可能也不应该编辑它。 有些管理员可能会这样做以对许多用户进行快速更改,但如果您不小心,则可能会导致难以修复的问题。 最好的办法是使用regedit对注册表进行更改。 在注册表中工作也应该谨慎行事,但很有可能找到一份指南,指导您完成必要的步骤。 在您下次注销或关闭时编辑注册表后,您的新设置将保存到NTUSER.DAT文件中。 |
sairen139 发表于 2019-1-28 10:27 原 删除任务栏锁定,任务栏图标的位置,查找可行性文件的方式 这几天改bug,遇到一个删除任务栏快捷图标的问题。本来想着应该挺简单的,估计是在注册表或者C盘的某个位置放置着一个链接,一删除就可以搞定。没想到没那么简单。 C:\Users\LeoLi\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar这个目录下放的就是任务栏中的快捷方式。我之前以为只要把这个地方的lnk删除了,就相当于去掉了任务栏快捷图标,但是结果还是存在,只是你点击的时候系统提示该链接已失效。看来这个方法是行不通的。 网上去搜资料,发现有篇介绍任务栏列表的文章:http://www.codeproject.com/Artic ... ies-in-C-Jump-Lists。这篇文章不是介绍如何删除任务栏锁定,而且介绍了为什么我们在任务栏的图标上右键的时候,会看到很多额外的信息,都是程序自己加上去的。所以可以适当的了解下。然后其实了解了这块内容,删除任务栏锁定就不是什么难题了。代码如下: bool UnLockWinTaskBarLink( const String runPath ) HINSTANCE hModule = ::LoadLibrary(_T("Shell32.dll")) ; typedef HRESULT (__stdcall* SHCreateItemFromParsingName)(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv) ; SHCreateItemFromParsingName mySHCreateItemFromParsingName = (SHCreateItemFromParsingName)GetProcAddress(hModule, "SHCreateItemFr omParsingName") ; if (mySHCreateItemFromParsingName == NULL) CComPtr<IShellItem> spItem ; HRESULT hr = mySHCreateItemFromParsingName( runPath.c_str(), NULL, IID_PPV_ARGS(&spItem)) ; result = false ; CComPtr<IStartMenuPinnedList> spStartMenuPinnedList ; hr = CoCreateInstance(CLSID_StartMenuPin, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&spStartMenuPinnedList)) ; result = false ; hr = spStartMenuPinnedList->RemoveFromList(spItem) ; result = false ; FreeLibrary(hModule) ; 代码的逻辑应该是不用多说,就是利用Shell32.dll的导出函数SHCreateItemFromParsingName,系统对每个任务栏锁定都相应的记录,通过这个程序的可执行文件的位置,我们可以得到一个操作这个程序的“标识”,便于去删除。 其实我多次看到Shell.dll的调用,这是一个很有用的dll,提供了很多操作系统的方法,我网上找了下这方面的总结,比较少,等以后用的多的再继续更新。 现在的问题似乎解决了,但是不要忘记,这个函数需要一个参数,也就是被删除任务栏锁定的可执行文件的位置。这儿可能很多人都说,直接获取当前路径不就完了吗?有现成的API。但问题是,如果要你删除的不是你自己的程序呢,随便给一个程序,让你解除任务栏绑定,你怎么去找到这个程序的exe的位置呢? 我之前的思路是系统肯定知道所有exe的位置,那注册表里有记录,可以直接找了半天没什么收获(其实确实有的,稍后说)。那最直接的办法就是全盘搜索,耗时巨大。一般来说程序的安装目录不会有太多层,我们遍历个7,8层应该都是可以检索出来的。而且还可以优先遍历某几个很有可能的文件夹,这样的设计显然不好。于是就想了个歪点子,我们能找到快捷链接的位置,右击快捷方式不是可以看到目标位置吗?那有没有办法获取到快捷方式的信息呢?答案是:有的。代码如下: BOOL GetIEQuickLaunchPath(TCHAR *pszIEQueickLaunchPath) if (SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &ppidl) == S_OK) BOOL flag = SHGetPathFromIDList(ppidl, pszIEQueickLaunchPath); ::wcscat_s(pszIEQueickLaunchPath, MAX_PATH, _T("\\Microsoft\\Internet Explorer\\Quick Launch")); CoTaskMemFree(ppidl); bool SearchExePathByLnk(String StrTargetFile, WCHAR* szDesEXEPath) ::CoInitialize(NULL); //初始化COM接口 IShellLink *psl = NULL; HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *)&psl); IPersistFile *ppf; hr = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf); if (SUCCEEDED(hr)) hr = ppf->Load(StrTargetFile.c_str(), STGM_READ); //加载文件 if (SUCCEEDED(hr)) WIN32_FIND_DATA wfd; psl->GetPath(szDesEXEPath, MAX_PATH, (WIN32_FIND_DATA*)&wfd, SLGP_SHORTPATH); //获取目标路径 return true; ppf->Release(); psl->Release(); //释放对象 ::CoUninitialize(); //释放COM接口 String StrTargetFile; PIDLIST_ABSOLUTE pid; TCHAR szDocument[MAX_PATH + 1] = { 0 }; WCHAR szDesEXEPath[MAX_PATH] = L""; GetIEQuickLaunchPath(szDocument); StrTargetFile.append(szDocument); StrTargetFile.append(_T("\\User Pinned\\TaskBar\\")); StrTargetFile.append(_T("酷我音乐.lnk")); SearchExePathByLnk(StrTargetFile, szDesEXEPath); UnLockWinTaskBarLink(RCString(szDesEXEPath)); DeleteFile(StrTargetFile.c_str()); 上面的代码中,通过lnk查找可执行文件的位置是参考的是另一位博友的博客:点击打开链接 http://blog.csdn.net/yoie01/article/details/8688686 。只要任务栏有锁定,那么%AppData%Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar中就一定有这个快捷方式,那这样的话,问题就解决了。 当然这不是什么好方法,后来我找到了注册表里关于信息的记录。在一个项名为Uninstall的下面,这个项有两个地方,不固定某一个,所以需要都检索一下,具体位置是: HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall ; HKEY_LOCAL_MACHINE, _T("Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall 。 找到这个地方,剩下的就是读取注册表了,这个应该就非常简单了吧? |
sairen139 发表于 2019-1-27 23:52 Win10系统下编辑其他用户注册表的技巧 2018-09-10 您是否考虑过如何修改Win10中其他用户的注册表设置?好吧,Window用户只能编辑和更改当前登录的用户帐户的注册表设置,例如当用户尝试打开注册表编辑器时,Windows显示注册表配置单元仅显示当前登录的帐户。如果您的系统有多个用户帐户,并且您希望修改另一个用户的注册表,则需要登录到所需的帐户以修改其注册表设置。但是,凭借足够的凭据,可以修改其他用户的注册表设置,而无需每次都登录到每个帐户。 为了编辑其他用户的Windows注册表,必须首先确定该特定用户的注册表配置单元的存储位置。每个用户的信息都存储在HKEY_CURRENT _USER注册表配置单元中,这对每个用户都是唯一的,并且在所有新版本的Window中,一旦用户登录系统,就会加载文件NTUSER.DAT。要修改其他用户的注册表设置,必须首先标识要修改的其他用户的用户目录文件。 在本文中,我们将介绍如何在Win10中修改其他用户注册表。在修改注册表设置之前,建议备份注册表。 在Win10中编辑其他用户的注册表 按照以下步骤加载另一个用户的注册表并更改其他注册表设置。 加载另一个用户的注册表配置单元 要编辑其他用户的注册表,必须首先加载其注册表,该注册表存储在用户目录文件NTUSER.DAT C: Users <用户名> ntuser.dat中。要加载用户的ntuser.dat文件,请使用reg.exe中的命令提示符或Power Shell。 在“开始”菜单中键入命令提示符并以管理员身份运行 键入以下命令,指定用户的密钥,NTUSER.DAT的文件和路径,以加载另一个用户的NTUSER.DAT文件 - reg load HKU<username> C:Users<username>ntuser.dat 确保将<username>替换为要编辑注册表的用户文件夹的名称。 加载成功完成后,打开“运行”。 键入regedit,然后单击“确定”。 导航到以下路径Computer HKEY_USERS并选择在命令提示符中指定的用户名。 Win10系统下编辑其他用户注册表的技巧.jpg 完成后,用户可以访问所有注册表项并更改其他用户的注册表项,而不会损坏主用户的帐户。 |
ge 发表于 2019-1-28 04:43 上面说过了,先关闭所有程序,尤其是安全软件,以免被占用。 |
magicgenius 发表于 2019-1-27 21:45 就这么简单?那操作过程条件是什么? |
这是 frg521 大神的指点,为防止忘记我在这里贴一份保存一下以免万一: 很简单的方法楼上有提到,直接从桌面上级剪切桌面或者我的文档到d盘,注册表就会跟随修改了,如果失败,可以用文档转移的方法来自己提取原理, 新建一个测试用户test登录进入再注销2次,用其他用户复制注册表xx.dat然后登陆进去,我的文档右键属性,指定新位置d盘新路径,所有提示都选择是,完事后注销2次,在复制注册表一份, 最后分别挂载这俩个注册表,用注册表工厂对比差异,可以看见你修改的新路径与就路径变化规则,其他路径参考修改,同样在线修改不行就换另一个用户离线修改。 12小时内该消息失效,如果有需要请即可保存复制文字到手机或者电脑 |
好的,我已经保存了 |
主要我是学文科的,搞ramos也是2018年才开始的。 |
好的,我改天实验一下。非常感谢大神! |
感谢大神悉心指点,我勉强明白七成。另外想请教一下vhd系统用户名文件夹下的NTuser.dat可以通过修改注册表的方法来转移位置到非系统盘,然后在r驱启动这个vhd的ramos里面也能使用这个非系统盘的NTuser.dat吗?具体应该怎么来操作? |
ge 发表于 2019-1-27 04:44 比如桌面,默认位置是C:\Users\Administrator文件夹下的Desktop,显示为“桌面”,把“桌面”剪切并粘贴到D盘Users文件夹下,那么位置就变成D:\Users\Desktop。 |
sairen139 发表于 2019-1-27 14:12 可以这样重定向,只要注意备份好数据就行。 |
朱玛12345678 发表于 2019-1-27 12:37 NTUSER.DAT、ntuser.ini、ntuser.dat.LOG三个文件是注册表部分文件,它会作用于单个用户。存储了“资源管理器”、任务栏、网络打印机、在控制面板中用户设置、附件设置(包括计算器、时钟、记事本、超级终端等)应用程序设置。 |
sairen139 发表于 2019-1-27 14:12 当然直接把用户名文件夹整体通过修改注册表转移到非系统盘也是可行的另外一种方法! |
sairen139 发表于 2019-1-27 14:08 目前来说对于NTuser.dat这个小文件的转移还是mklink这种方法能行,也比较简单。 |
朱玛12345678 发表于 2019-1-27 12:37 这个NTuser.dat的注册表位置和值确实是正确的,但是我在正常启动的vhd里把NTuser.dat拷贝到F盘system volume informatin文件夹下,然后修改这个值为f盘这个文件路径。然后重启进入R驱启动的ramos的这个vhd,结果发现r驱ramos里面的这个注册表的值被自动替换成R驱内存盘\用户名\NTuser.dat的路径了,r驱ramos系统使用的NTuser.dat自然也就不是f盘那个了!实验至此直接修改法是对R驱的ramos来说是不成功。 |
目录链接 我用好多年了,倒是没碰过啥问题. 也不能拿 微软的BUG来说事,,, BUG 干的事能按常理解释么,. 推荐大家安装 LinkShellExtension 这款软件,可以很方便的创建及查看 软/硬链接. |
朱玛12345678 发表于 2019-1-27 12:37 好的我现在在外面手机上网,回去后试试。 |
12345678 2019-1-27 12:03 NTuser.datmklinkиNTuser.datλλ |
朱玛12345678 发表于 2019-1-27 11:43 昨天测试,只改shell floders下是不成功的,只改user shell folders下能成功。 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.