C++自谈(To 所有评论者)

当然我是C++菜鸟,楼上的说法都对。
但是,没有一个语言是完美的,没有那个东西是不能批评的,一百个人心中有一百个汉姆雷特,我觉得我说他复杂没有什么问题。
现在一个流行词叫分离关注,一次做好一件事就行了,但C++显然不是,他又要兼顾速度,又要不失面向对象,又要保留C程序员。if you don't use it, you don't pay for it,实际上,你无时无刻不在为那些你不要的功能埋单。
不知道这个例子对不对,如果C++是完美的,那么微软就不会模仿Java来做C#,而应改模仿C++来做。如果像Linux那种可以适应从高手到菜鸟的操作系统会成功,那么微软现在早就关门。
Simplest the best永远是正确的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在Windows C++中,您可以使用Windows API中的SetFileSecurity函数来设置文件的安全权限,包括文件所有者的权限。 以下是一个示例代码,用于将文件所有者设置为具有完全控制权限: ```c++ #include <windows.h> #include <aclapi.h> int main() { // 获取文件句柄 HANDLE hFile = CreateFile("C:\\path\\to\\file", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("Failed to open file\n"); return 1; } // 获取文件安全描述符 PSECURITY_DESCRIPTOR pSD; if (!GetUserObjectSecurity(hFile, &SECURITY_INFO::OWNER_SECURITY_INFORMATION, pSD, NULL, NULL)) { printf("Failed to get security descriptor\n"); CloseHandle(hFile); return 1; } // 获取文件所有者SID PSID pOwnerSid; BOOL bOwnerDefaulted; if (!GetSecurityDescriptorOwner(pSD, &pOwnerSid, &bOwnerDefaulted)) { printf("Failed to get owner SID\n"); LocalFree(pSD); CloseHandle(hFile); return 1; } // 创建一个新的ACE,将文件所有者添加到ACE中,并为该ACE分配完全控制权限 EXPLICIT_ACCESS ea; ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS)); ea.grfAccessPermissions = GENERIC_ALL; ea.grfAccessMode = SET_ACCESS; ea.grfInheritance = NO_INHERITANCE; ea.Trustee.TrusteeForm = TRUSTEE_IS_SID; ea.Trustee.TrusteeType = TRUSTEE_IS_USER; ea.Trustee.ptstrName = (LPTSTR)pOwnerSid; // 将新的ACE添加到文件的ACL中 PACL pAcl; PSECURITY_DESCRIPTOR pNewSD; if (SetEntriesInAcl(1, &ea, NULL, &pAcl) != ERROR_SUCCESS) { printf("Failed to set ACE\n"); LocalFree(pSD); CloseHandle(hFile); return 1; } // 将新的ACL分配给新的安全描述符 if (!InitializeSecurityDescriptor(&pNewSD, SECURITY_DESCRIPTOR_REVISION) || !SetSecurityDescriptorDacl(&pNewSD, TRUE, pAcl, FALSE) || !SetUserObjectSecurity(hFile, &SECURITY_INFO::OWNER_SECURITY_INFORMATION, pNewSD)) { printf("Failed to set security descriptor\n"); LocalFree(pAcl); LocalFree(pSD); CloseHandle(hFile); return 1; } // 清理资源 LocalFree(pAcl); LocalFree(pSD); LocalFree(pNewSD); CloseHandle(hFile); return 0; } ``` 请注意,为了执行此操作,您需要以管理员身份运行程序。此外,代码中的错误检查被省略以增加可读性,实际应用中应该进行适当的错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值