我最近通过添加到清单 level ='requireAdministrator'来修改了一个应用程序。在这个应用程序中,我在本地映射文件夹中调用System::Environment::CurrentDirectory
。例如,我将X:\
驱动器映射到C:\toto
。现在我需要管理员权限,我总是将路径作为UNC。但是我想把它作为我以前的映射文件夹(我希望得到X:\
而不是\\MyComputer\C\toto
。)
这种“新”行为导致应用程序中的错误。我希望有旧的行为,我不明白为什么当我更改所请求的权限时它突然改变了。
请注意,我的UAC设置为0(最低级别...)。另请注意,System::IO::Directory::GetCurrentDirectory()
给出了相同的结果。我正在使用Win7SP1。
有什么想法吗?谢谢!
答案 0 :(得分:2)
这是设计:
启用UAC后,系统会在用户登录时创建两个登录会话。两个登录会话都相互链接。一个会话在提升的会话期间表示用户,而另一个会话以最少的用户权限运行。
创建驱动器映射时,系统会创建符号链接对象(" DosDevices"),将驱动器号与UNC路径相关联。这些对象特定于登录会话,并且不在登录会话之间共享。
最终用户可以设置EnableLinkedConnections注册表值,但作为应用程序开发人员,您应该修复错误,而不是更改系统配置。