【发布时间】:2010-12-03 14:43:26
【问题描述】:
我正在尝试从我的 Delphi 应用程序中运行命令行命令。
ShellExecute(Form1.Handle,
'open',
'cmd.exe',
'icacls "C:\ProgramData\My Program\File" /grant Users:F',
nil,
SW_NORMAL);
注意:该命令本身可以完美运行。
但是,当我在 Delphi 中运行此代码时,我会弹出命令窗口,但我要执行的命令没有运行,甚至没有出现在命令窗口中。
知道我缺少什么吗?
【问题讨论】:
-
cacls 不是 DOS 命令
-
甚至“dir”都不是。 DOS 不是现代 Windows 系统的一部分。不过,“dir”是命令行命令或系统命令。
-
另外,你应该使用
SW_SHOWNORMAL。 -
好吧,最好不要乱用 ProgramData 中的权限并遵循平台指南!
-
@Tim:您没有设置“写入”(“M”,修改)权限。您正在设置“完全控制”(“F”)权限。再一次,看起来你不知道区别。如果文件在用户之间共享,则更重要的是要避免一个用户损坏将由另一个用户使用的文件。您还更改了文件的权限,因为“并非所有人都可以访问 HKLM”,但您也可以设置注册表项的权限(尽管与文件和目录一样,您应该非常小心地更改它们的权限)。允许对
的无限制写访问也是不好的。
标签: delphi command-line shellexecute