在C:\驱动器权限问题中写入文件

时间:2014-05-15 18:55:45

标签: c# permissions elevated-privileges

我用c#开发了一个win应用程序,它在c:\驱动器的文件夹中生成文件。当尝试生成文件时,然后出现权限问题,但是当应用程序在C:\之外的其他驱动器中生成文件时,则不会出现问题。因此,当我将我的应用程序设置分发给最终用户时,我不确定将安装我的应用程序的用户是否具有在C:\驱动器中生成文件的权限。

所以指导我如何克服这个问题。 我应该使用清单在win OS中提升应用程序吗?

我收到了一些文章

http://blogs.msdn.com/b/nikhiln/archive/2007/04/19/embed-a-manifest-to-make-an-application-elevate-in-vista.aspx

http://www.codeproject.com/Articles/105506/Getting-Elevated-Privileges-on-Demand-using-C

http://archive.msdn.microsoft.com/KB981778

等......请指导我正确的知识。感谢

1 个答案:

答案 0 :(得分:0)

您可以使用提升的权限再次启动应用程序,并在应用程序的开始时检查是否是这种情况。这是一个例子:(小心不要进入应用程序启动的无限循环。)

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        string[] args = Environment.GetCommandLineArgs();
        if (args.Length > 1 && args[1] == "-e") Text = "Elevated";
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Process process = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = Application.ExecutablePath,
                Arguments = "-e",
                Verb = "runas",//-Admin.
            }
        };
        process.Start();
    }
}

我同意,将信息存储在“C:”中可能不是一个好主意。您可以尝试某些地方:Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)