我有一个可以安装在任何地方的应用程序。当程序在不受保护的文件夹中时,我不希望它提示用户。当应用程序在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.cs
或frmMain_Load
中运行,因为这是在应用程序启动之后,因此无效。
答案 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);
}