保留注册表值的双引号

问题描述 投票:-1回答:1

我正在尝试向包含空格的注册表添加一个值,因此我想保留双引号。

我尝试用'\''转义双引号,但这没有效果

path_with_spaces = "C:\Users\me\i have space\app.exe"
argument_with_spaces = "Quick brown fox"

data = '"{}" -n "{}"'.format(path_with_spaces, argument_with_spaces)
command = 'REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /f /v test /d "{}"'.format(data)
subprocess.call(command)

如果我打印“命令”我得到:

REG添加HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run / f / v test / d“”C:\ Users \ me \ i有space \ app.exe“-n”Quick brown fox“”

但是在使用regedit检查结果时没有双引号。即使我这样做:

data = '\"{}\" -n \"{}\"'.format(path_with_spaces, argument_with_spaces)

没有变化。使用regedit检查时的输出总是如下所示:

C:\ Users \ me \我有space \ app.exe -n Quick brown fox

我究竟做错了什么?

python-3.x registry double-quotes
1个回答
1
投票

当您在data变量中注入command变量时,它已经是一个字符串。所以,如果你想把\放在command上,你必须在data声明中将它们加倍

我想你可以尝试这样的事情:

data = '\\"{}\\" -n \\"{}\\"'.format(path_with_spaces, argument_with_spaces)
© www.soinside.com 2019 - 2024. All rights reserved.