簡體   English   中英

c ++如何獲取非管理員帳戶下的%AppData%路徑並以管理員身份運行VS2013

[英]c++ how to get %AppData% path under non-administrator account and running VS2013 as Administrator

我知道這里有很多類似的問題,例如如何獲取%AppData%路徑

但是我的與眾不同:

1.我有兩個帳戶:

Admin- Administrator account
Test- Non-Administrator account

2.使用VS2013作為管理員運行我的項目,原因是該項目需要具有提升的權限。 然后使用以下代碼段獲取appdata路徑:

TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szPath)))
{
    //....
}

但是szPath的實際值是C:\\Users\\Admin\\AppData\\Roaming ,而不是我想要的C:\\Users\\Test\\AppData\\Roaming

有人知道該怎么做嗎? 提前致謝。

問題的根本原因是以“ Admin”帳戶運行VS。 只要您繼續這樣做,%AppData%將指向該帳戶的appdata文件夾。 沒有驚喜。

因此,您必須更改方法。 一些選項:

  1. 您可以刪除對%APPDATA%的硬性依賴。 不要自動執行。 將其放入一些配置文件中,然后從中讀取路徑。 然后,您將可以在任何帳戶下運行該應用程序並將其配置為查看任何路徑
  2. 您可以添加標志以在調試/發布模式等下打開/關閉該配置文件
  3. VS在提升模式下以管理員身份運行-好的,因此可以使用它來編譯應用程序。 然后使用您的普通帳戶運行/調試/測試您的應用。 VS可以以用戶X的身份運行,而應用程序可以以用戶Y的身份運行。由於X是Admin,因此VS仍然可以連接/調試Y的進程。 最簡單的示例:停止使用F5運行和調試,使用debug / attach-to和您的應用程序手動
  4. 大多數情況下,VS不需要運行“管理員”。 它更有可能需要在提升的環境中運行。 確保您的帳戶在Administrator組/ etc中,然后在您自己的帳戶中以高程運行VS。 如果一切正常,那么它將以“管理員權限”作為您的帳戶運行。
  5. 為什么您甚至需要提升VS? 不正常 誰告訴你,在99.9%的情況下是錯誤的。 當“ VS需要提升”時,最常見的情況是有人在COM組件上工作並使用COM自動注冊。 如果沒有管理員權限,則無法重新注冊/注銷COM組件,因此請以管理員身份運行VS。 錯誤。 編寫一個小的批處理/ exe /腳本,將取消/注冊該組件,將其標記為需要提升,將其添加到pre / postbuild步驟或msbuild任務中,VS可以神奇地再次在用戶級別運行

等等..有很多選擇,一切都取決於您願意改變您的方法。

關於第四個問題:嘗試此操作-在開始菜單中找到“命令行”(cmd.exe)的快捷方式。 右鍵單擊它。 您應該看到選項“以管理員身份運行”(不是“以其他用戶身份運行..”)。 控制台打開后,編寫: echo %APPDATA%並檢查它是什么。 它應該指向您的應用程序數據,但是在窗口標題欄上您應該看到Administrator:CommandPrompt警告信息。 現在編寫start cmd.exe 另一個管理控制台應彈出,以證明高度會傳播到子進程。 在新控制台中檢查APPDATA,它仍然應該是您的。 那只是一個測試。

如果控制台正常工作並傳播了海拔和環境變量,那么您還應該能夠直接在VisualStudio圖標上選擇“以管理員身份運行”。 就這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM