2016-07-05 364 views
-1

我開發了一個c#windows窗體應用程序。這個應用需要管理員權限。現在我想啓動一個沒有管理員權限的進程,因爲在這個過程中,我得到了一些特殊的文件夾路徑,例如文檔,臨時文件,appdata等。目前它給了我該文件夾的管理員用戶路徑,因爲進程是以管理員權限開始的。如何在沒有管理員權限的情況下啓動進程

如何在沒有管理員權限的情況下啓動進程即使應用程序以管理員權限運行?

+1

這是管理員權限和以管理員身份運行之間的巨大差異..如果你以管理員身份運行,那麼你的用戶,如果你使用管理員權限運行,那麼你仍然是你 – BugFinder

+0

看看'ProcessStartInfo' 。你可以傳遞你希望它運行的用戶的用戶名和密碼。 https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110).aspx –

+0

[如何從我的升級過程啓動未升級的過程,反之亦然](https: //blogs.msdn.microsoft.com/oldnewthing/20131118-00/?p=2643)。當然,它是從Win32方面來處理它的,所以你可能需要跳過一些箍環來編寫管理的等價物。 –

回答

0

看一下屬性文件夾中的app.manifest文件。刪除以下行:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

添加以下行,而不是這樣的:

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

可能是這個答案有幫助。

http://weblogs.asp.net/kennykerr/Windows-Vista-for-Developers-1320-Part-4-1320-User-Account-Control

同時檢查此解決辦法。

Windows註冊表編輯器5.00版

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker] 
@="Run without admin rights (UAC)" 

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command] 
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\"" 

簡單 - 添加上下文菜單上的應用程序。文件選擇運行沒有管理權限。在某些情況下 - 少量0.1%的程序可能會問UAC提示兩次。

保存在name_of_file.reg並將其添加到Windows註冊表中。

相關問題