保留注册表值的双引号

时间:2019-03-26 12:18:32

标签: python-3.x registry double-quotes

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

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

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有空间\ app.exe“ -n” Quick brown fox“ “

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

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

没有变化。使用regedit检查时的输出始终是这样的:

C:\ Users \ me \ i我有空格\ app.exe -n棕色狐狸

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

data变量注入command变量中时,它已经是字符串。因此,如果您想将\保留在command中,则必须在data声明中将它们加倍

我认为您可以尝试这样的事情:

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