2010-02-09 136 views
2

我不知道是否有可能programmaticaly共享文件夹在Windows 7中的受限制的登录会话中运行时:Windows 7的文件夹共享API

1)NetShareAdd返回ERROR_ACCESS_DENIED。 2)命令行网络共享说相同。 3)但是,在不调用UAC的情况下创建新的共享资源管理器没有问题。它是如何做到的?

任何帮助将不胜感激。

+0

你的意思是非管理员会话吗? – 2010-02-18 22:16:41

+0

不,它是管理员,但不是真实的管理员(UAC) – GoAvs 2010-02-22 21:09:31

+0

您确定资源管理器实际上正在创建共享吗?例如,如果我共享某个已分享内容的子目录,则看不到屏蔽;但是,如果我尝试分享尚未共享的内容,则会显示屏蔽图标。 – 2010-03-09 03:29:20

回答

0

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

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

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

+0

感谢您的解释(可信应用程序部分) – GoAvs 2010-03-31 23:05:21

+0

什么是更细粒度的方法?我想避免升级我的应用程序以管理员身份运行,但我需要共享文件夹(例如)。 – gap 2011-03-23 17:37:11