获取登录用户的 AppData\Local 文件夹

2024-06-24

我目前正在使用:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

检索当前用户的AppData\Local小路。该程序需要提升的权限,并且在标准用户会话下运行它会引发要求管理员登录凭据的提示。以管理员(不同用户)身份登录显然会更改程序的活动用户。因此,返回的文件夹路径是管理员的路径,而不是标准用户使用的路径。

预期结果:

C:\Users\StandardUser\AppData\Local

实际结果:

C:\Users\Administrator\AppData\Local

有没有办法获取特定用户的 AppData\Local 路径?与获取任意用户的路径相比,获取记录的用户名或凭据不是问题。该应用程序基于 WPF,其所需的权限通过以下方式在清单文件中设置requestedEcecutionLevel (requireAdministrator).


要获取其他用户的信息,您需要知道该用户的用户名/密码,如中所述这个问题 https://stackoverflow.com/q/37630726/579895.

所以我想提出一个替代解决方案:

1.- 而不是使用requestedExecutionLevel对于该应用程序,将其删除并以登录用户身份运行。这样您就可以轻松访问特殊文件夹路径并可以记录它。

2.- 以管理员身份重新启动您的应用程序。

示例代码(在App.xaml.cs中):

private void Application_Startup(object sender, StartupEventArgs e)
{
    if (!IsRunAsAdmin())
    {
        // here you should log the special folder path 
        MessageBox.Show(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
        // Launch itself as administrator 
        ProcessStartInfo proc = new ProcessStartInfo();
        proc.UseShellExecute = true;
        proc.WorkingDirectory = Environment.CurrentDirectory;
        proc.FileName = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
        proc.Verb = "runas";

        try
        {
            Process.Start(proc);
        }
        catch
        {
            // The user refused the elevation. 
            // Do nothing and return directly ... 
            return;
        }

        System.Windows.Application.Current.Shutdown();  // Quit itself 
    }
    else
    {
        MessageBox.Show("The process is running as administrator", "UAC");
    }
}

internal bool IsRunAsAdmin()
{
    WindowsIdentity id = WindowsIdentity.GetCurrent();
    WindowsPrincipal principal = new WindowsPrincipal(id);
    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}

此示例代码适用于 WPF 应用程序,但也可以在 winforms 应用程序中执行相同的操作。

参考:UAC 自高程 https://code.msdn.microsoft.com/windowsapps/CSUACSelfElevation-644673d3#content

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取登录用户的 AppData\Local 文件夹 的相关文章

  • 您使用什么工具和技术来查找死代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您使用哪些工具和技术来查找 NET 中的死代码 过去 我用 Obsolete 属性修饰方法 传递 tr
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • 运行时两个注册之间的简单注入器基于动态上下文的注入

    我有一个使用 Simple Injector 进行命令处理程序注册的中介应用程序 并且注入和处理程序均已设置并完美运行 class DoWashingCommandHandler IRequestHandler
  • 如何从 std::vector 中删除元素而不调整其大小

    迭代器擦除 迭代器位置 迭代器擦除 首先是迭代器 迭代器最后 擦除元素 从向量中删除 容器可以是单个元素 位置 或一系列元素 第一个 最后一个 这有效地减少了向量 大小除以元素数量 删除 调用每个元素的 之前的析构函数 and remove
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • ASP.NET 中的 thread.sleep

    我正在为我的网站模拟彗星实时馈送协议 因此在我的控制器中我添加 while nothing new before timeout Thread Sleep 1000 但我注意到添加此功能后整个网站变慢了 调试后我得出结论 当我打电话时Thr
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • argc 和 argv 在 Windows 中没有用吗?

    在 Linux 中 argc 和 argv 计算终端中的参数 但在 Windows 中 我找不到放置第二个参数的地方 事实上 每次我运行该程序时 它都会创建那个丑陋的黑色窗口 我什至没有机会给出任何争论 那么这两个变量在Windows平台下
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 如何让 PCRE 与 C++ 一起使用?

    这是一个新手问题 但我希望我能尽可能清楚地表达我的问题 我正在尝试用 C 进行模式匹配 我已经从以下位置下载了 PCRE 的 Win32 版本here http gnuwin32 sourceforge net packages pcre
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • WPF 复选框状态不会在固定页面中更新

    我正在尝试导出一些基于在 WPF 中用作模板的固定页面元素的数据 并且我在更新复选框的值时似乎遇到问题 奇怪的是 我还在模板中使用了文本块和文本框 但这些在更新其内容时没有问题 所以 从一开始 我想要导出的数据位于名为 RepairStat
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 矩阵行列式算法 C++

    我是编程新手 我一直在寻找一种找到矩阵行列式的方法 我在网上找到了这段代码 但我很难理解这里的算法 我对递归的基础没有问题 但继续和主循环我很难理解 非常感谢任何可以向我解释该算法的人 int determ int a MAX MAX in
  • 使用反射检测属性的访问修饰符类型

    我编写了一些代码来使用反射查看属性 我已经使用反射从类中检索了属性列表 但是我需要查明该财产是公共的还是受保护的 例如 public string Name get set protected int Age get set Propert
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • 如何以一对一/零关系更新员工和身份用户

    我正在尝试更新员工记录 也想更新身份用户 如果我先单独更新身份用户 例如 UserManager Update user Context Entry employee State System Data Entity EntityState

随机推荐

  • 如何从 TabHost 中删除选项卡

    In a TabHost http developer android com reference android widget TabHost html小部件 我可以使用它的内容 意图 创建一个新选项卡TabHost addTab Tab
  • 删除 JTable 最后一行的问题

    这是我第一次在这里提问 所以如果有什么不合适的地方请原谅我 如果我的英语不是很好 请原谅 嗯 简而言之 目前我正在使用 Swing 开发一个 Java 桌面应用程序 但在使用 table 时遇到问题 我有行 每行都有一个用于删除该行的按钮
  • 有没有什么方法可以添加选项卡布局而不让活动扩展TabActivity?

    我想将选项卡添加到我的 Activity 的布局中 但我不希望该 Activity 扩展 TabActivity 中的例子http developer android com resources tutorials views hello
  • c中的字母相减

    我想知道如何在C中 减去字母 我的意思是 我有 2 个字母 a 和 c 我想执行 c a b 即 3 1 2 如何在 C 中获得相同的行为 我可以转换字母 gt 数字但如何管理长度有限字母表的 谢谢 您可以将字母视为数字 然后添加字母 a
  • 在Java中存储和搜索二维空间坐标的良好数据结构是什么

    我目前正在为一款游戏编写一个插件 其中一个功能包括设置由 2 个二维坐标定义的区域 矩形的左上和右下区域 然后 这些区域将被存储 并且将具有与每个区域相关联的各种其他数据 当玩家在世界上移动时 我需要仅根据玩家的坐标确定他何时进入这些区域之
  • 如何取消注册我的应用程序的文件格式?

    在 Windows 10 中的 Delphi 10 4 2 win 32 VCL 应用程序中 我注册了 ICO我的图形应用程序的文件格式使用DSiWin32 DSiRegisterUserFileAssoc https github com
  • 使用 iPhone 上传视频

    可以将视频上传到服务器吗 我知道图像是可能的 如果有人能指出我正确的方向 那就太好了 Thanks 2015 年 8 月编辑 这个答案现在已经严重过时了 在撰写本文时 选项并不多 而且视频的大小也相对较小 如果您现在正在考虑这样做 我会使用
  • 如何在 ASP.Net Web API 中为特定控制器启用 Windows 身份验证

    我想知道是否有一种方法可以仅为特定 ASP Net Web API 控制器的特定操作启用 Windows 身份验证 我的 Web API Web 服务有几个具有多种操作的控制器 但只有一个控制器的一个操作需要 Windows 身份验证 此
  • Scala 修饰符和类型参数化

    我正在创建一个记忆类 每个类都会记忆一个函数类型并具有以下定义 class MemoizedFunction1 T1 R f T1 gt R private this val cache mutable Map T1 R def apply
  • 如何在PHP框架中实现引导类?

    我正在制作自己的 MVC 框架 请不要对我投反对票 因为每个人都想制作一个框架 所以 我想制作一个引导类 就像我在许多框架中看到的那样 我之所以这样做是因为我决定通过开始从内部学习框架来进入下一个层次 但我在克服它们时遇到了一些问题 但我会
  • longjmp 应该恢复堆栈吗?

    据我了解 setjmp保存当前上下文 并在调用时恢复它longjmp 然而 下一段代码打印 15 我用 g 编译 没有任何优化 我是否误解了这个结构或者我错过了什么 include
  • 将 PDF 附加到另一个 PDF 文件的可用空间

    病毒帕特尔的教程 http viralpatel net blogs itext tutorial merge split pdf files using itext jar 关于如何合并和拆分 PDF 文件很有用 不幸的是 我需要的不仅仅
  • 使 diff-lcs 的输出可读

    我正在使用 diff lcs gem 输出两个 html 内容体之间的差异 这是示例内容 版本一 p Paragraph one Sentence one p p Paragraph two Another sentence p p Par
  • JavaFX 2.0 - 为 FXML 中的自定义组件创建操作处理程序

    我想在我的新组件中添加自定义操作 这个怎么做 示例代码 成分 public class MyCustomComponent extends Region public MyCustomComponent super this setOnMo
  • file_get_content 不适用于 PHP 中的 https

    有人在通过 https 的网站显示内容时遇到过问题吗 该代码一直有效 直到服务器上的所有站点都获得了 ssl 证书是 tlss 1 2 可能有什么关系 所以我尝试执行此操作的网站现在拥有此证书 data file get contents
  • 熊猫计算唯一行

    我有一个类似于以下内容的 pandas 数据框 ColA ColB 1 1 1 1 1 1 1 2 1 2 2 1 3 2 我想要一个具有相同功能的输出Counter https docs python org 2 library coll
  • 在sbt的build.sbt文件中添加模块依赖信息

    我在 IntelliJ 中有一个多模块项目 如该屏幕截图所示 contexProcessor 模块依赖于 contextSummary 模块 一旦我在项目结构中设置了依赖项 IntelliJ 就会处理所有事情 然而 当我跑步时sbt tes
  • Node.js - 如何在 Node.js 应用程序中获取我的外部 IP 地址?

    我正在使用 node js 我需要获取由 ISP 提供的外部 IP 地址 有没有办法在不使用类似服务的情况下实现这一目标http myexternalip com raw http myexternalip com raw Thanks 可
  • QNetworkAccessManager 的替代方案

    我正在BB10中绘制地图 地图被划分为图块 开始时 用户给出经度 纬度和缩放级别 地图将显示在该坐标处 我通过使用 QNetworkAccessManager 执行 http 请求来获得单个图块 首先下载 7x5 块 但问题是 当用户开始在
  • 获取登录用户的 AppData\Local 文件夹

    我目前正在使用 Environment GetFolderPath Environment SpecialFolder LocalApplicationData 检索当前用户的AppData Local小路 该程序需要提升的权限 并且在标准