我写了一个应用程序(C#,VS2013),然后添加安装(flexera)。 安装过程向ProgramFiles direcotiry提供复制文件,并在桌面上创建快捷方式(链接)。 所以,当我点击快捷方式 - 程序无法启动时,在Windows事件日志中我看到了这些例外情况:
Сведенияобисключении:System.UnauthorizedAccessExceptionСтек:в System.IO .__ Error.WinIOError(Int32,System.String)в System.IO.Directory.InternalCreateDirectory(System.String, System.String,System.Object,Boolean)в System.IO.Directory.InternalCreateDirectoryHelper(System.String, Boolean)вmain_windows.Settings.Log(System.String)в main_windows.Settings..ctor()вmain_windows.Program.Main()
如果我以管理员身份启动快捷方式 - 一切都很好。
那时,如果我转到已安装程序的文件夹并单击exe文件 - 它会启动,无需以管理员身份启动它。
我尝试了不同的方法来解决这个问题,方法是更改文件夹和文件的权限,包括关闭/继续继承,但是不成功......
问题 - 我能做些什么来解决我的问题。
答案 0 :(得分:0)
namespace main_windows
{
static class Program
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
bool createdNew = true;
using (Mutex mutex = new Mutex(true, "Settings", out createdNew))
{
if (createdNew)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Settings());
}
else
{
Process current = Process.GetCurrentProcess();
foreach (Process process in Process.GetProcessesByName(current.ProcessName))
{
if (process.Id != current.Id)
{
SetForegroundWindow(process.MainWindowHandle);
break;
}
}
}
}
}
}
}
答案 1 :(得分:0)
{{1}}