2017-05-12 13 views
1

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); 
} 
+0

Outlookを右クリックし、管理者として実行してください。 – Xaqron

+0

私の推測では、あなたのプログラムが実行しようとしていることは、作業ディレクトリへの書き込みアクセスが必要なことでしょうか? – mageos

+0

exeプログラムには何も特別なことはありません。ロギングもありません。それはまた、空のウィンドウフォームウィンドウかもしれません... – Valtinho

答えて

0

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); 
} 
+0

残念なことに、私は作業ディレクトリを設定するかどうかは、それは何の違いもありません。 – Valtinho

+0

作業ディレクトリをユーザーのドキュメントフォルダに設定するとどうなりますか?面白いことに、 –

+0

私は昨日それを試していたし、特定のコンピュータにはドキュメントフォルダがなかった。私はそれが偶然に削除されたのかどうかはわかりませんが、Windowsマシンがドキュメントフォルダなしで完全に幸せに走っていて、プログラムがクラッシュしていたので、代わりにAppDataフォルダからプログラムを実行することにしました。アクセス許可の問題はありませんが、これは一時的な解決策に過ぎません。 – Valtinho

0

[プログラムファイル]フォルダには管理者権限が必要です。あなた(ユーザー)に十分な特権がない場合は、何も変更できません。また、ターゲット.exeファイルが作成または書き込みしようとすると、そのファイルが実行されません。

x86ベースのOSシステムでコードを実行すると、パスは異なります。このようなOSにはProgram Files (x86)というフォルダはありません。

また、実行可能ファイルへのフルパスを指定する場合は、WorkingDirectoryプロパティを設定する必要はありません。

+0

私はコンピュータのアーキテクチャを検出し、それに応じてパスを設定するコードを持っています。私は問題を切り分けるために私の例から除外しました。つまり、exeファイルは開かないということです。ユーザーには、少なくともプログラムファイルフォルダに対する読み取り権限が必要です。そうしないと、プログラムを実行できなくなります。問題を再現しようとする場合は、単純に空のWindowsフォームを開こうとすることができます。 – Valtinho

+0

e Windowsフォームアプリケーションで同じ結果が得られますか? –

+0

Windowsフォームが何であるか分かりませんが、私の知らないことは残念です。 exeは、別のWindowsフォームプロジェクトです...私はこの権限の問題を、今は時間の不足のために断念しました。私はまだvstoとマニフェストファイルを保存しているので、プログラムファイルディレクトリからソフトウェアを実行できるようにしたい。しかし、解決策が見つかるまでこれを動作させるために、vstoを変更して、代わりにユーザーのappdataフォルダからexeファイルを開きます。 – Valtinho

関連する問題