我正在尝试用一个文件启动Excel。当我用同一个用户运行它时,它工作得很好。但是对于不同的用户,只有Excel启动,并且也有未知的错误。
private void button1_Click(object sender, EventArgs e)
{
SecureString securePwd = new SecureString();
string password = "P@ssw0rd1";
SecureString sec_pass = new SecureString();
Array.ForEach(password.ToArray(), sec_pass.AppendChar);
sec_pass.MakeReadOnly();
ProcessStartInfo ps = new ProcessStartInfo();
ps.FileName = "c:\\Program Files\\Microsoft Office\\Office15\\EXCEL.EXE";
ps.Arguments = "c:\\test_folder\\test.xlsx";
ps.WorkingDirectory = "c:\\test_folder";
ps.Domain = "test.local";
ps.UserName = "testuser";
ps.Password = sec_pass;
ps.UseShellExecute = false;
Process.Start(ps);
}
同样的代码通过从ps.FileName =“c:\Program Files\Microsoft Office\Office15\EXCEL.EXE”;到ps.FileName =“notepad.EXE”;
如果有任何权利的问题,即使notepad.exe也不应该工作。
4条答案
按热度按时间izkcnapc1#
知道这是一个老帖子,仍然给像我这样有类似问题的人留下回复。查看您的代码,似乎您可能需要将“ps.UseShellExecute”设置为“true”。我在WPF应用程序中使用一个按钮尝试了类似的代码(如下所示),它打开Excel文件没有问题。
当然,不要忘记在.cs脚本的顶部添加以下行。
好吧,快乐的编码:)
watbbzwu2#
代码似乎没有任何问题。由于没有改变一点,它只是开始工作正常了。什么都没有。这就引出了一个问题,比如问题是什么。
有什么建议吗?
a7qyws3x3#
这是很正常的事情。如果你在公司工作,你和你的朋友一起打开共享Excel文件,其中一个会得到信息“文件被另一个用户打开”,你可以解决这种情况,将此文件复制到例如C:/Temp,然后在共享空间中替换它。
9avjhtql4#
使用C#代码以非管理员用户启动Excel Process。
1.对于
LoadUserProfile=true
,加载HKEY_USERS注册表项中的用户配置文件。1.对于
filePath
参数,传入要以其他用户身份打开的Excel文件路径。如果为空,Excel应用程序将打开一个新的空白工作簿。