C#Outlook由于权限的原因,VSTO无法启动进程
我用C#创建了一个VSTO,我想从Program Files(x86)文件夹中调用一个简单的EXE文件。 VSTO代码非常简单,只是尝试使用System.Diagnostics中的Process.Start调用EXE文件。在具有管理员用户的计算机上,代码正常工作。但是,当我在非管理员用户的计算机上尝试它时,VSTO显然没有权限启动EXE。没有错误,但它根本不会做任何事情。C#Outlook由于权限的原因,VSTO无法启动进程
有没有人如何解决这个权限问题?提前致谢!
代码:
private void ThisAddIn_Startup(object sender, System.EventArgs e) {
ProcessStartInfo info = new ProcessStartInfo("C:\\Program Files (x86)\\My Program\\here.exe");
info.WorkingDirectory = "C:\\Program Files (x86)\\My Program\\";
info.UseShellExecute = true;
Process.Start(info);
}
不设置工作目录Program files (x86)
目录。
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
ProcessStartInfo info = new ProcessStartInfo(@"C:\Program Files (x86)\My Program\here.exe");
//info.WorkingDirectory = "C:\\Program Files (x86)\\My Program\\";
info.WorkingDirectory = SpecialFolder.ApplicationData
info.UseShellExecute = true;
Process.Start(info);
}
请记住Program Files文件夹需要管理员权限。如果您(用户)没有足够的权限,则无法修改任何内容。如果目标.exe文件尝试创建或写入某些内容,则无法运行。
如果您在基于x86的OS系统中运行代码,路径将会不同。在这些操作系统上没有Program Files (x86)
文件夹。
如果您指定可执行文件的完整路径,则不需要设置WorkingDirectory
属性。
我有一段代码检测计算机的体系结构并相应地设置路径。我从我的例子中排除了它,以隔离问题,即exe甚至没有打开。用户必须至少具有对程序文件文件夹的读取权限,否则无法运行程序。如果你想尝试复制这个问题,你可以简单地尝试打开一个空白的窗体。 – Valtinho
您是否通过e Windows Forms应用程序获得相同的结果? –
不知道什么是Windows窗体,对不起我的无知。该exe是一个单独的窗体项目...我现在放弃了这个权限问题,因为缺乏时间。我仍然希望能够从程序文件目录运行软件,因为这是我存储vsto和清单文件的地方。但是,为了让它现在能够工作,直到找到解决方案,我改变了vsto,而不是从用户的appdata文件夹中打开exe文件。 – Valtinho
只需右键单击Outlook并以管理员身份运行它。 – Xaqron
我的猜测是你的程序试图做的事情需要对工作目录的写入权限(可能是日志?)。 – mageos
在exe程序中没有什么特别的。没有记录。它可能是一个空的窗体窗口窗口... – Valtinho