【问题标题】:Windows 7 folder sharing APIWindows 7 文件夹共享 API
【发布时间】:2011-01-15 01:08:48
【问题描述】:

我想知道在受限登录会话中运行时是否可以在 Windows 7 中以编程方式共享文件夹:

1) NetShareAdd 返回 ERROR_ACCESS_DENIED。 2) 命令行 net share 也一样。 3) 但是浏览器在不调用 UAC 的情况下创建新共享没有问题。它是怎么做到的?

任何帮助将不胜感激。

【问题讨论】:

  • 您的意思是非管理员会话吗?
  • 不,是管理员,但不是真正的管理员 (UAC)
  • 您确定 Explorer 确实在创建共享吗?例如,如果我共享已共享内容的子目录,我看不到盾牌;但是,如果我尝试分享尚未分享的内容,则会显示盾牌图标。
  • 是的,“高级共享”按钮上有盾牌图标,但我没有收到 UAC 的任何提示。

标签: winapi windows-7 uac


【解决方案1】:

Windows 7 中的 UAC 没有 Vista 中那么严格。 Windows 7 将资源管理器视为受信任的应用程序,因此它将在没有 UAC 提示的情况下静默创建共享(您可以在控制面板中更改此行为)。

您的应用程序不是一个受信任的应用程序(好吧,您信任它,但操作系统不信任)。可能您也没有明确要求您的应用程序具有管理员权限。在这种情况下,Windows 7 将您的程序视为非特权程序并拒绝访问,这就是错误消息的原因。

解决方案可能是向您的程序添加清单,请求 ExecutingLevel 为 requireAdministratior。参见例如Demand UAC elevation for an application by adding a manifest。但随后您的整个应用程序以管理员身份运行。还有一些更精细的解决方案。

【讨论】:

  • 感谢您的解释(受信任的应用程序部分)
  • 更细粒度的方法是什么?我想避免升级我的应用程序以管理员身份运行,但我需要共享文件夹(例如)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 2019-02-24
  • 2012-04-10
相关资源
最近更新 更多