无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
12
返回列表 发新帖
楼主: sairen139

[讨论] 桌面转移USER\Software\Micrsoft\Windows\CurrentVersion\Explorer\User ShellFolders

  [复制链接]
 楼主| 发表于 2019-1-28 10:27:27 | 显示全部楼层
sairen139 发表于 2019-1-27 23:52
这是 frg521 大神的指点,为防止忘记我在这里贴一份保存一 ...

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

完成后,用户可以访问所有注册表项并更改其他用户的注册表项,而不会损坏主用户的帐户。

点评

原 删除任务栏锁定,任务栏图标的位置,查找可行性文件的方式 这几天改bug,遇到一个删除任务栏快捷图标的问题。本来想着应该挺简单的,估计是在注册表或者C盘的某个位置放置着一个链接,一删除就可以搞定。没想  详情 回复 发表于 2019-1-28 11:05
回复

使用道具 举报

 楼主| 发表于 2019-1-28 11:05:59 | 显示全部楼层
sairen139 发表于 2019-1-28 10:27
Win10系统下编辑其他用户注册表的技巧

2018-09-10

原 删除任务栏锁定,任务栏图标的位置,查找可行性文件的方式

这几天改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  。

找到这个地方,剩下的就是读取注册表了,这个应该就非常简单了吧?

点评

快速让你解决Win10注册表解决“固定到任务栏”的应用程序快捷方式 时间:2016-06-03 来源:http://www.Ghost123.com/ 游览量: 2320 次 从Windows7开始,微软引入了把常用的应用程序固定到任务栏这种设  详情 回复 发表于 2019-1-31 11:37
回复

使用道具 举报

 楼主| 发表于 2019-1-28 11:15:57 | 显示全部楼层
什么是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文件中。
回复

使用道具 举报

 楼主| 发表于 2019-1-28 11:42:10 | 显示全部楼层
朱玛12345678 发表于 2019-1-27 12:03
不建议使用链接的方式重定向目录,WIN10 v1809刚发布的时候就是因为使用了这个才导致的用户数据丢失。
...

https://blog.csdn.net/cfqcfqcfqcfqcfq/article/details/79555034
回复

使用道具 举报

发表于 2019-1-28 13:03:19 | 显示全部楼层
magicgenius 发表于 2019-1-28 08:04
上面说过了,先关闭所有程序,尤其是安全软件,以免被占用。

哦!就是在系统启动完成就可以?
回复

使用道具 举报

 楼主| 发表于 2019-1-30 20:05:36 | 显示全部楼层
本帖最后由 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项即可!
回复

使用道具 举报

 楼主| 发表于 2019-1-31 11:37:00 | 显示全部楼层
sairen139 发表于 2019-1-28 11:05
原 删除任务栏锁定,任务栏图标的位置,查找可行性文件的方式

这几天改bug,遇到一个删除任务栏快捷图 ...

快速让你解决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:还原“固定到任务栏”信息。
重装系统之后,我们首先把之前备份的快捷方式重新复制回原来的路径。然后再把备份的注册表信息重新导入注册表即可
回复

使用道具 举报

 楼主| 发表于 2019-2-9 23:24:46 来自手机 | 显示全部楼层
1、win7桌面背景保存位置:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Themes    可以在这里找到当前桌面背景图片的保存位置。  2、系统自带的壁纸在C:\WINDOWS\Web\Wallpaper文件夹下。    这里存储的是系统自带的壁纸,可以根据个人需要将下载的壁纸放入这个文件夹。  然后返回Win7“桌面背景”界面,这里会显示所有的壁纸。
回复

使用道具 举报

发表于 2023-6-8 14:15:44 | 显示全部楼层
很早以前在win7里试过,和程序相关的强制做硬链接会有很多问题,只改外壳会好一点.
pin ,sendto,jumplist,startmenu,quicklaunch这些
回复

使用道具 举报

发表于 2023-12-22 21:10:02 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-28 21:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表