【问题标题】:programmatically obtaining special folder write permission using User Access Control in Windows 7 and Vista在 Windows 7 和 Vista 中使用用户访问控制以编程方式获取特殊文件夹写入权限
【发布时间】:2011-04-25 20:52:42
【问题描述】:

我需要在自动启动文件夹中为所有用户写一个快捷方式。

场景是具有管理员权限的用户,通过应用程序的配置对话框,必须能够将应用程序设置为所有普通用户登录时自动启动。

我使用

获取启动文件夹
SHGetSpecialFolderPath(NULL, startFolderPath, CSIDL_COMMON_STARTUP, FALSE)

但是我没有对该文件夹的写入权限,即使登录的用户是管理员组的一部分。

我想我需要调用一些与用户帐户控制 (UAC) 相关的 API 函数来请求登录用户的权限以提升当前权限。

这应该也适用于 Windows XP

【问题讨论】:

    标签: visual-c++ windows-7 windows-vista windows-xp winapi


    【解决方案1】:

    当您说您没有对该文件夹的写入权限时,您用于写入的应用程序或工具是否已提升运行?也就是说,以管理员身份运行?这与由管理员帐户运行不同。如果没有,请右键单击该 exe 并选择以管理员身份运行。这将提升应用程序并可能使其能够完成配置任务。

    这与用户访问控制或代码访问安全无关。是 UAC 保护 HKLM、程序文件和其他所有用户、每台机器的设置。

    【讨论】:

    • 谢谢,我把 UAC 误认为是用户访问控制。我会在我原来的问题中将其更正为用户帐户控制。
    • 我不希望我的应用程序以管理员身份运行。我只想在创建快捷方式所需的短时间内提升权限。我想显示 UAC 窗口以询问用户更改受保护设置的权限,就像安装程序一样。
    • 这也是我要说的。写入注册表的东西需要提升。如果您希望它提升而其余的不提升,请将其放在单独的 exe 中,使用 requireAdministrator 在其上放置清单,然后使用 ShellExecute 启动它。
    • 天啊。这比我预期的要复杂。非常感谢。
    猜你喜欢
    • 2011-04-23
    • 2014-07-03
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多