python - 从 python 调用 Windows 的 icacls

标签 python windows cmd icacls

我已经成功地使用 subprocess.check_output 调用了大量的 Windows 程序。 然而,我在调用 icacls 时遇到了麻烦。
通过 cmd,这有效:
cmd>icacls "C:\我的文件夹"/GRANT *S-1-1-0:F
我试过:
subprocess.check_output(['C:\\Windows\\System32\\icacls.exe','"C:\\我的文件夹"','/GRANT *S-1-1-0:F'] ,shell=True,stderr=subprocess.STDOUT)
但返回代码为 123(根据 micrsoft,文件名无效)。
我也试过(也可以在 cmd 中使用)
subprocess.check_output(['C:\\Windows\\System32\\icacls.exe','"C:/我的文件夹"','/GRANT *S-1-1-0:F'], shell=True,stderr=subprocess.STDOUT)
但返回码也是 123。

有什么想法吗?

最佳答案

不要过度引用您的论点,否则它们将按字面意思传递。让 check_output 在需要时处理引用。使用参数列表的最佳方式:

subprocess.check_output(['icacls.exe',r'C:\my folder','/GRANT','*S-1-1-0:F'],stderr=subprocess.STDOUT)

(请注意,我删除了 shell=True 和命令的路径,并使用原始前缀以避免文件夹参数的反斜杠加倍)

关于python - 从 python 调用 Windows 的 icacls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45421302/

相关文章:

c# - .NET 4.0 - AccessViolationException 和 WndProc

windows - 如何使用 .bat 脚本关闭窗口?

php - 在 PHP 中启动一个 Windows 进程并获取它的 PID?

powershell - 在Powershell中提示输入

javascript - Python Selenium : Click on a radio button

python - -1 在 numpy reshape 中是什么意思?

python - Python 日志记录中的不同处理程序是否可以有不同的级别名称

python - py2app setup.py使用问题

python - 使用 anaconda prompt 将批 Labelme json 文件转换为一组图像和标签

java - 当我从 Java 打开 CMD 时,无法更改目录