gpt4 book ai didi

c++ - CreateSymbolicLink 在 Windows 8 上运行,在 Windows 7 上返回错误代码 1314

转载 作者:行者123 更新时间:2023-11-28 06:40:47 25 4
gpt4 key购买 nike

我正在尝试使用 Wix 安装程序从自定义操作 dll 创建符号链接(symbolic link)。

自定义操作以管理员身份运行,我使用以下代码确认了它:

http://code.msdn.microsoft.com/windowsdesktop/CppUACSelfElevation-5bfc52dd

问题是在 Windows 8 上创建了符号链接(symbolic link),但是在 Windows 7 上返回错误 1314:

ERROR_PRIVILEGE_NOT_HELD1314 (0x522)
A required privilege is not held by the client.

Windows 7 和 Windows 8 用户都能够以管理员身份运行该进程。

请问我该如何解决这个问题?

问候,
诺尔

最佳答案

错误不是告诉您您没有访问权限,而是告诉您您没有权限。在某些操作系统版本下需要明确请求某些权限。即使具有管理员访问权限,Windows 7 似乎也关闭了 SeCreateSymbolicLinkPrivilege。

伪代码,但我相信您必须在调用 CreateSymbolicLink 之前调整进程 token 的权限

LUID luid;
if(LookupPrivilegeValue(NULL, _T("SeCreateSymbolicLinkPrivilege"), &luid))
{
HANDLE hToken = get_process_token();
TOKEN_PRIVILEGES token_privileges;
token_privileges.PrivilegeCount = 1;
token_privileges.Privileges[0].Luid = luid;
token_privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(hToken, FALSE, &token_privileges, 0, NULL, NULL))
{
// TODO: call GetLastError and report an error.
}
}

关于c++ - CreateSymbolicLink 在 Windows 8 上运行,在 Windows 7 上返回错误代码 1314,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26020777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com