【问题标题】:Admin Rights Prompt Not Showing in Executed Process执行过程中未显示管理员权限提示
【发布时间】:2016-02-04 10:22:30
【问题描述】:

我想将一个 xml 文件保存到本地文件系统上的 MyDocuments 文件夹中。为此,我使用以下内容:

xmlDoc.Save(Path.GetPathRoot(savePath + saveName));

savePath 在哪里

String qnPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "QuesitNote\\");
String savePath = Path.Combine(qnPath, "SavedDecks");

saveName是用户输入的string,格式为无空格。

由于管理权限问题,我无法执行此操作。到目前为止,我已经尝试了很多解决方案,其中包括:

第一种方法有效,但我只需要特定方法的管理员权限,即我保存 xml 文件的方法。 第二个给了我System.Security.SecurityException。 第三个似乎可以工作,但实际上并没有创建文件,只是给出了我创建的“成功”消息。 UAC 提示从未出现。

在这一点上,我不知道如何解决这个问题。理想情况下,我只能将管理权限用于一种方法(使用我的第二次尝试),但第三次尝试的修复也会有所帮助。 如何让 UAC 提示出现(第三次尝试),或以其他方式解决我的问题?

【问题讨论】:

    标签: c# winforms process console admin


    【解决方案1】:

    您可以创建一个进程并使用以下属性:

    Process.StartInfo.UseShellExecute = true;
    Process.StartInfo.Verb = "runas";
    

    然后在你的过程中你可以保存你的文件。

    【讨论】:

    • 不幸的是,这不起作用。我想我需要调整ProcessStartInfo 的其他属性。 UAC 对话框仍未出现。
    • 在尝试调整属性并使用用户名和密码,使用SecureStrings 手动输入管理员凭据后,仍然没有运气。
    • 如果你愿意,你可以生成一个消息框,显示像 UAC 弹出?
    • 事情是,它正在保存具有管理员权限的文件.. 所以当用户点击保存时,您可以显示一条消息并询问您是否要授予管理员权限..然后您的功能相应地工作跨度>
    • 是的。我试过了,但我很欣赏你的解决方案。但是用户名和密码组合不正确的情况反复几天。我什至创建了另一个本地帐户,但它说他们错了。我在虚拟机上可能会很麻烦。
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多