小编hol*_*ost的帖子

为什么我不能在64位机器上正确读取HKCU中的32位注册表值?

我对Windows 7注册表问题感到困惑,虽然各种问题和答案让我在那里找到了一些方法,但我见过的那些问题解决了我的特定问题.我不知道其他Windows版本是否会影响这个问题,但我们都有win7x64机器.

我们的工作中有各种各样的工具,一些C++,一些C#,一些python(2.6)等.我们还运行32位和64位工具.在过去,我们很高兴地存储了注册表信息HKLM.我们一直在努力将东西转移到HKCU.我们已经就是否要这样做,影响UAC等进行了很多讨论.我们真的想尝试做出这一举动.那说:

我们无法读取/写入注册表项HKCU/software/CompanyABC/App.我们app在python中进行了一次设置编写,使用将注册表项写入上述位置_winreg.我们是否指定KEY_WRITE| KEY_WOW64_32KEY或只是KEY_WRITE,值被写入HKCU/Software/WOW6432Node/companyABC/app.精细.

然后我有一个C#应用程序试图读取这些值.使用Microsoft.Win32.Registry,我打开子键('HKCU/Software/CompanyABC/app'),我看不到我的值.事实证明我看到以下行为:

  • 当读取/写入注册表项时HKLM,这些东西都可以正常工作.python应用程序将写入HKLM/Softare/Wow6432Node/CompanyABC/app,C#代码将从该位置读取.考虑到我们如何构建C#应用程序以及通过python编写注册表值,这一切都是正确的
  • 从HKCU读取/写入注册表值,我得到不同的行为.该_winreg功能将写入HKCU/Sofrware/Wow6432Node/CompanyABC/app,但C#应用程序会读取HKCU/Software/CompanyABC/app.C#应用程序是作为x86应用程序构建的(不是任何CPU而不是x64)所以我假设应用程序将被正确地重定向到wow6432Node,但它似乎没有.

经过一番调查,似乎HKCU/Software有所不同. 文章似乎表明,这个区域是"共享",而不是重定向.如果是这样的话,那么我不明白为什么我们的Python应用程序(再次使用_winreg)被写入到HKCU使用了一个位置Wow6432Node-它似乎应该没有地方可以重定向写它.我想这可能是一个错误_winreg.

我真的希望避免WOW6432Node明确地使用我们的工具,但这就是我今天所处的位置.任何人都可以向我解释如何使32位和64位进程的注册表访问HKCU正常工作,而不必求助于32位配置单元的硬编码路径?

c# python registry windows-7

9
推荐指数
1
解决办法
3669
查看次数

为什么在迭代命令输出时批处理文件FOR会失败?

我有一个批处理文件,使用这个习惯用法(很多次)将注册表值读入环境变量:

FOR /F "tokens=2* delims=  " %%A IN ('REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName') DO SET MyVariable=%%B
Run Code Online (Sandbox Code Playgroud)

(后面有一个制表符delims=)

这在数千个客户的计算机上运行良好.但是在一个客户的计算机上(运行Windows Server 2003,启用了命令扩展),
它失败了,因为它'REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName'未被识别为内部或外部命令,可操作程序或批处理文件.reg query单独运行" "命令工作正常.Reg.exe存在于C:\Windows\System32.

通过将代码更改为,我能够解决问题

REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName > temp.txt
FOR /F "tokens=2* delims=  " %%A IN (temp.txt) DO SET MyVariable=%%B
Run Code Online (Sandbox Code Playgroud)

这让客户启动并运行,但我想了解问题发生的原因,以便将来可以避免.

稍微偏离主要主题 - 将注册表值(字符串或DWORD)添加到环境变量中的更直接方法也很有用.

windows cmd batch-file

6
推荐指数
1
解决办法
1643
查看次数

Visual Studio远程调试 - 缺少MSVCP140.dll

我正在尝试从我的本地开发人员调试在远程机器上运行的.Net应用程序.机.我收到一个错误说 MSVCP140.dll is missing

细节:

开发.机器:Visual Studio 2015,Windows 7

远程计算机:安装了Windows Server 2012 R2,2015的Visual Studio远程工具.

在远程计算机上,我使用"无身份验证"和端口4020配置了远程调试器.

在开发中.machine的Visual Studio Attach to Process窗口,配置如下:

传输:远程(无身份验证)

限定符:remote_machine_name:4020

当我点击" 刷新"按钮时,它会列出远程机器的进程.在远程计算机上,Visual Studio远程调试器窗口显示user_name已连接.

Remote Debugger窗口的屏幕截图

只要我在Visual Studio中连接到远程计算机的进程,它就会进入调试模式,但符号仍会被卸载.

有趣的是,在远程计算机上我收到一条错误消息:"程序无法启动,因为MSVCP140.dll您的计算机缺少
该程序.请尝试重新安装该程序以解决此问题."

错误的屏幕截图:MSVCP140.dll缺失

但是,该文件MSVCP140.dll存在于msvmon.exe文件路径中.

c# remote-debugging visual-studio visual-studio-2015 visual-studio-2017

6
推荐指数
1
解决办法
2128
查看次数

如何检查网页是否已加载或我在VBScript中的XP和Windows 7和10 Internet Explorer有错误

如何验证是否加载了不可见的网页.
由于互联网连接问题或从网站加载页面我在Internet Explorer for XP或Windows 7或10中显示错误,如"网页无法显示".

需要告诉我网页是否成功加载或有问题所以我可以决定下一步是什么.

windows vbscript webpage loading

5
推荐指数
0
解决办法
422
查看次数

Powershell 查找并替换注册表值?

'HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders'有一些路径设置为旧服务器。例如:

“我的图片”设置为'\\DeadServer\RedirectedFolders\%UserName%\My Documents\My Pictures'

我想替换"\\DeadServer\RedirectedFolders""C:\Users"

这怎么能在powershell


我尽力了

Get-ItemProperty -path“Microsoft.PowerShell.Core\Registry::HKEY_USERS\*\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell 文件夹”| ?{$_.PSObject.Properties -如“*DeadServer*”}

但我认为我对我想要更改的条目如何是“属性”而不是“项目”感到困惑,并且我不知道如何像项目一样迭代属性。


在您提问之前,我已经通过组策略进行了此更改,但还没有进行。用户正在收到消息

\DeadServer\RedirectedFolders\%UserName%\My Documents\My Pictures` 上的回收站已损坏。您想清空该驱动器的回收站吗?

登录后,文件夹重定向将无法应用。
这是我尝试手动将更改强制返回本地存储。

registry powershell

3
推荐指数
1
解决办法
2万
查看次数

如何使用vbscript读取注册表项的所有值?

我的注册表中有以下值

钥匙:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Accepted Documents\

价值观:

* -> application/msword
** -> application/vnd.ms-excel
*** -> application/vnd.ms-powerpoint
Run Code Online (Sandbox Code Playgroud)

等等

我想知道如何阅读所有内容

使用Wscript.ShellRegRead我只能读取一个值,但我事先不知道这些值......

registry vbscript

2
推荐指数
1
解决办法
1万
查看次数