首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为64位操作系统查找LEAP Office会计客户端的GUID并将其用于删除注册表项?

如何为64位操作系统查找LEAP Office会计客户端的GUID并将其用于删除注册表项?
EN

Stack Overflow用户
提问于 2018-08-06 04:25:39
回答 4查看 125关注 0票数 0

我已经创建了一个.cmd脚本,它在特定的软件上运行卸载,如下所示:

代码语言:javascript
运行
复制
Title LEAP Office Accounting Client for 64-Bit Operating Systems
Echo LEAP Office Accounting Client for 64-Bit Operating Systems
WMIC Product Where "Name='LEAP Office Accounting Client for 64-Bit Operating Systems'" Call Uninstall /NoInteractive 

这将导致卸载控制面板中的剩余条目,并且我已经将其链接到在调用卸载后仍然保留的注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{7BF4C2E2-96B9-4E84-B0FC-0C084B4068F1}

我可以在脚本中添加什么,以确保通过卸载命令或单独的delete命令将其删除?

注册表项{7BF4C2E2-96B9-4E84-B0FC-0C084B4068F1}的最后一部分是唯一的(GUID)。因此,我需要找到正确的注册表每次,因为脚本是为了删除这个软件不止一次。

EN

回答 4

Stack Overflow用户

发布于 2018-08-06 06:01:28

由于{7BF4C2E2-96B9-4E84-B0FC-0C084B4068F1}是动态的,并且将根据安装进行更改,因此我们可以使用/s /f "Key value data"搜索\Uninstall\目录及其子键,以根据DisplayName的值数据查找键值。要做到这一点,我们可以使用for语句和REG QUERY来设置一个字符串,其中包含键所属的子目录的路径。

要删除密钥,我们需要使用REG DELETE - reg delete /?

参数/f将删除条目,而不需要确认。

代码语言:javascript
运行
复制
@echo off
setlocal enableextensions disabledelayedexpansion

for /f "tokens=2 delims={}" %%a in ('
    REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s /f "Put your programs DisplayName's value here"
') do REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{%%a}" /f

pause

此脚本将根据DisplayName的值移除您的键。您将希望在注册表中搜索此值并将其插入脚本中。确保以管理员身份运行此脚本。

票数 0
EN

Stack Overflow用户

发布于 2018-08-06 09:32:56

代码语言:javascript
运行
复制
@echo off
setlocal

call :del_uninstall_key "LEAP Office Accounting Client for 64-Bit Operating Systems"

exit /b

:del_uninstall_key
setlocal
set "key="

for /f "tokens=*" %%A in ('
    reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    /s /f "%~1"
    ^|find "HKEY_LOCAL_MACHINE"
') do if not defined key set "key=%%~A"

if not defined key (
    >&2 echo Reg key not found.
    exit /b 1
)

reg delete "%key%" /f
exit /b

使用displayname值调用标签:del_uninstall_keyreg query搜索值并获取返回文本的第一行,这将是键。使用find将返回的值限制为具有HKEY_LOCAL_MACHINE的值。

如果定义了变量key,则将执行reg delete命令。

使用for /?reg /?exit /?进行命令帮助。

票数 0
EN

Stack Overflow用户

发布于 2018-08-06 10:20:24

这里有一个想法,基于这样的假设:您也可以从相同的Win32_Product结果中确定唯一的GUID。

代码语言:javascript
运行
复制
@Echo Off
Set "GUID="
Set "RKEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
Set "PROD=LEAP Office Accounting Client for 64-Bit Operating Systems"

For /F "Tokens=2Delims==}" %%A In ('WMIC Product Where "Name='%PROD%'" Get IdentifyingNumber /Value 2^>Nul') Do Set "GUID=%%A}"
If Not Defined GUID Exit /B
WMIC Product Where "Name='%PROD%'" Call Uninstall
Reg Delete "%RKEY%\InstallShield_%GUID%" /F>Nul

不过,我确实认为,如果您正在访问注册表,您可能可以使用该位置的UnistallString值数据卸载该软件。

您甚至可以解析它使用的交换机的数据,还可以选择添加自己的数据,以降低进程的交互性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51700536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档