2017-05-12 34 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

請記住Program Files文件夾需要管理員權限。如果您(用戶)沒有足夠的權限,則無法修改任何內容。如果目標.exe文件嘗試創建或寫入某些內容,則無法運行。

如果您在基於x86的OS系統中運行代碼,路徑將會不同。在這些操作系統上沒有Program Files (x86)文件夾。

如果您指定可執行文件的完整路徑,則不需要設置WorkingDirectory屬性。

+0

我有一段代碼檢測計算機的體系結構並相應地設置路徑。我從我的例子中排除了它,以隔離問題,即exe甚至沒有打開。用戶必須至少具有對程序文件文件夾的讀取權限,否則無法運行程序。如果你想嘗試複製這個問題,你可以簡單地嘗試打開一個空白的窗體。 – Valtinho

+0

您是否通過e Windows Forms應用程序獲得相同的結果? –

+0

不知道什麼是Windows窗體,對不起我的無知。該exe是一個單獨的窗體項目...我現在放棄了這個權限問題,因爲缺乏時間。我仍然希望能夠從程序文件目錄運行軟件,因爲這是我存儲vsto和清單文件的地方。但是,爲了讓它現在能夠工作,直到找到解決方案,我改變了vsto,而不是從用戶的appdata文件夾中打開exe文件。 – Valtinho

相關問題