相关疑难解决方法(0)

皮条客我的UAC和一些关于它的问题

我有这个应用程序需要在受保护的路径中做一些事情(如%PROGRAMFILES%),我知道我应该使用%APPDATA%,但我现在无法改变它.我已经隔离了所有可能需要UAC出现在另一个项目上的东西,这里是一个示例代码:

using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;

class Class1
{
    static void Main(string[] args)
    {
        try
        {
            File.CreateText(Path.Combine(Application.StartupPath, "something.txt"));
        }
        catch (UnauthorizedAccessException ex)
        {
            MessageBox.Show(ex.Message, "UnauthorizedAccessException", MessageBoxButtons.OK, MessageBoxIcon.Error);

            if (args.Length == 0)
            {
                Process proc = new Process();
                proc.StartInfo.FileName = Application.ExecutablePath;
                proc.StartInfo.Arguments = "not again";
                proc.StartInfo.Verb = "runas";
                proc.Start();
            }
            else
            {
                MessageBox.Show("Exit to avoid loop.");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我从我的主程序中调用这个可执行文件,如果由于未经授权的访问而失败,它将自动启动显示UAC请求.

我的问题是:

1)我不得不将项目输出从DLL转换为EXE,因为我找不到任何方法从DLL请求UAC提升,有没有简单的方法呢?

2)我还注意到有些程序显示了个性化的UAC消息,带有程序徽标和所有这些东西,让我给大家展示一个例子:

丑陋的UAC

个性化的UAC

我怎么能为我的程序做到这一点?

3)为了避免在使用提升的权限运行时进入循环,它会获得另一个UnauthorizedAccessException我做了那个传递任何args的东西.你会做些什么来实现同样的目标?

我想这就是现在.谢谢你的时间.

.net c# uac windows-vista windows-7

6
推荐指数
2
解决办法
2961
查看次数

标签 统计

.net ×1

c# ×1

uac ×1

windows-7 ×1

windows-vista ×1