首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用UAC时,FileExists在网络驱动器上是假的?

当使用UAC时,FileExists在网络驱动器上是假的?
EN

Stack Overflow用户
提问于 2014-05-07 17:03:34
回答 1查看 1.4K关注 0票数 1

我发现了一个CLI工具的问题,它通过拖放接受文件。

文件X:\MyApp.exe是一个CLI工具,它需要UAC提升(这将被授予)。

操作系统是Win7 32位.

X:是到NAS的网络驱动器。

当我将X:\MyDLL.dll拖到X:\MyApp.exe中时,FileExists(ParamStr(1))将是假的。RaiseLastOSError()将显示代码3。我做错了什么?

当源文件存储在C:(并拖到EXE文件中)时,它确实工作。

代码语言:javascript
复制
WriteLn('ParamStr 1 = '+ParamStr(1)); // X:\MyDLL.dll
if not FileExists(ParamStr(1)) then
begin
  try
    RaiseLastOSError;
  except
    on E: exception do
    begin
      Writeln(E.message); // (Translated) System error 3. The file could not be found.
    end;
  end;
  exit;
end;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 17:18:08

提升的应用程序确实会看到用户的映射驱动器。这类似于在用户帐户下登录的服务,以及使用相同用户帐户登录到桌面的用户。服务将无法看到用户的映射驱动器。

解决这种情况的方法是创建一个具有所需权限运行的服务,然后创建一个运行非提升级别的标准应用程序。应用程序向服务发送消息,以便它能够执行需要提升的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23523970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档