1

プログラムのインストーラーで使用する基本的なコードを使用しています。起動時にプログラムを実行するために、All Users Startup フォルダーに .lnk を作成しています。

私が持っているコードはショートカットを作成するために機能しますが、エラー コード 5 (priv エラー) が表示され続けます。このコードを右クリックして管理者として実行しようとしましたが、機能せず、エラー コード 5 が返されました。また、このコードを使用して、ファイル システムの他の部分に問題なくショートカットを作成しました。

また、主に「elevate.exe」などのサードパーティ プログラムを使用してプログラムを実行しましたが、それでも機能せず、引き続きエラー コード 5 が返されます。

私の質問は、以下のコードを使用して、UAC を使用せずにすべてのユーザーのスタートアップ フォルダーにショートカットを作成するにはどうすればよいですか?

 int main () 
 {

 CoInitialize(NULL);

 IShellLink* pShellLink = NULL;

 HRESULT hres;

 hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLink,   (void**)&pShellLink);

  if (SUCCEEDED(hres))

  {
    pShellLink->SetPath("C:\\Windows\\System32\\testinstall\\test.exe");  // Path to the object we are referring to

    pShellLink->SetDescription("This is a test");

    pShellLink->SetIconLocation("C:\\Windows\\System32\\testinstall\\test.exe", 0);

    IPersistFile *pPersistFile;

    hres = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);

    if (SUCCEEDED(hres))

    {
        hres = pPersistFile->Save(L"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup", TRUE);

        pPersistFile->Release();
    }

    else
    {
        cout << "Error 2" << endl;

        return 2;
    }

    pShellLink->Release();

    }

    else
    {

    cout << "Error 1" << endl;

    return 1;

    }

    cout << GetLastError ();

    _getch ();

    return 0;

    }
4

0 に答える 0