使用ShellExecute可以使用多个参数运行icacl
Use ShellExecute to run icacls with multiple parameters
我正在尝试从c++执行icacls。下面的代码没有任何作用。我仍然不知道为什么它什么都没做。我看不到icacl返回给我什么,因为cmd窗口自动关闭。HINSTANCE也没有给我太多帮助。如何使用具有多个参数的icacls?
HINSTANCE hInst = ShellExecute( NULL,
NULL,
L"icacls",
L"s.jpg /grant:r %username%:W",
L"C:/",
SW_NORMAL
);
您的lpFile
参数可能应该是扩展名为.exe
的"icacls.exe"
。
此外,您应该始终检查错误。如果ShellExecute()
成功,则返回一个大于32的值。有关可能返回的错误代码列表,请参阅MSDN。
出于测试目的,您可以通过将icacls
的输出封装在cmd /k
:中来查看它
HINSTANCE hInst = ShellExecute( NULL,
NULL,
L"cmd",
L"/k icacls s.jpg /grant %username%:W",
L"C:/",
SW_NORMAL
);
[为什么选择grant:r
?]
取消删除帖子:
我之前写过这段代码,不幸的是它是CLR/。NET特定。然而,由于您声称使用"API"很难(事实上,我10年前就这样做了,而NTFS ACLS不是picknick(,您可能会受到以下示例的激励来集成一些。NET代码(基于C++/CLI或Interop?(
有什么不使用C#代码的具体原因吗?
AddFileSecurity(fileName, @"DomainNameAccountName",
FileSystemRights.ReadData, AccessControlType.Allow);
RemoveFileSecurity(fileName, @"DomainNameAccountName",
FileSystemRights.ReadData, AccessControlType.Allow);
使用MSDN中的以下助手:如何:添加或删除访问控制列表条目:
public static void AddFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
FileSecurity fSecurity = File.GetAccessControl(fileName);
fSecurity.AddAccessRule(new FileSystemAccessRule(account,
rights, controlType));
File.SetAccessControl(fileName, fSecurity);
}
public static void RemoveFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
FileSecurity fSecurity = File.GetAccessControl(fileName);
fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
rights, controlType));
File.SetAccessControl(fileName, fSecurity);
}
有关完整的详细信息和评论,请参阅文章
相关文章:
- 如何用参数值调用函数(仅在运行时已知)
- 使用参数在 C# 的C++上运行.exe
- 是否可以在运行时强制转换模板参数?
- 如何使用传递给编译器的相同参数在 cmake 中运行命令?
- 在 C++ 中运行时调用模板时,是否可以切换模板的参数类型?
- 如何创建两个具有相同名称和不同返回类型并基于布尔参数运行的函数
- 在运行时使用枚举器值作为模板函数的模板参数的元程序
- 如何在程序中运行带有参数C++ VBS 脚本?
- 如何将参数传递给已经开始运行的线程
- GTest - 在不同的参数上运行多个测试用例
- C++ 模板类:运行时给出的模板参数,如何避免重复大开关情况?
- 如何使用模板生成常规参数列表并将其传递给运行时函数?
- 尝试使用浮点参数运行重载函数时出错
- 两个构造函数(带和不带参数),没有输入 -> 没有参数运行。跳过上述类中的构造函数
- 分叉:使用一个参数运行 shell 时资源暂时不可用
- 以目录作为参数运行C 文件?而是使用bash
- 使用C++(Cython)中的参数运行已编译的python脚本
- C++ 使用参数运行.exe文件
- 使用IDE中的命令行参数运行我的应用程序
- 使用ShellExecute可以使用多个参数运行icacl