仅在安装在受保护的文件夹中时显示UAC提示

时间:2014-02-27 05:03:11

标签: c# uac

我有一个可以安装在任何地方的应用程序。当程序在不受保护的文件夹中时,我不希望它提示用户。当应用程序在Program Files(或类似的受保护文件夹)中时,是否可以仅显示UAC提示符?

我现在正在使用此代码来检查它是否具有写入权限(来自this question):

public static bool HasWriteAccess(string folder) {
    try {
        System.Security.AccessControl.DirectorySecurity ds = Directory.GetAccessControl(folder);
        return true;
    }
    catch(UnauthorizedAccessException) {
        return false;
    }
}

我知道代码无法在Program.csfrmMain_Load中运行,因为这是在应用程序启动之后,因此无效。

1 个答案:

答案 0 :(得分:1)

我刚刚写了一个小测试,看看这个想法是否有效。这有效:

    static void Main(string[] args)
    {
        string _name = Assembly.GetExecutingAssembly().Location + Guid.NewGuid().ToString();
        try
        {
            File.CreateText(_name).Close();
            File.Delete(_name);
        }
        catch (UnauthorizedAccessException)
        {
            Restart();
            return;
        }

        Console.WriteLine("execution with write access");
        Console.ReadKey();
    }

    private static void Restart()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = Assembly.GetExecutingAssembly().Location;
        startInfo.Verb = "runas";
        Process p = Process.Start(startInfo);
    }