Autostartordner finden



  • Hi, ich moechte den Autostartordner des Current User bwz der Local Machine finden.
    Bis jetzt geh ich so vor:

    const char szStartUp[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders";
    	const char szCurUserStartValue[] = "Startup";
    	const char szLocMachineStartValue[] = "Common Startup";
    ...
    	if( GetRegValue(szStartUp, szCurUserStartValue, (char*)szKeyValue, &dwValueSize) == ERROR_SUCCESS)
    ....
    
    LONG cAutoStart::GetRegValue(const char* pszSubKey, const char* pszValueName, char* szValue, LPDWORD pdwSizeValueName, KEY_TYPE KeyType)
    {
    	HKEY hOpenKey;
    	HKEY hTmp = (KeyType == CUR_USER) ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE;
    	LONG lReturn;
    
    	if( (lReturn = RegOpenKeyEx( hTmp, pszSubKey, 0, KEY_READ, &hOpenKey)) == ERROR_SUCCESS)
    	{
    		lReturn = RegQueryValueEx(hOpenKey, pszValueName, NULL, NULL, (LPBYTE) szValue, pdwSizeValueName);
    		RegCloseKey(hOpenKey);
    	}
    
    	return lReturn;
    }
    

    Was auch soweit super klappt. Jetzt is nur die Frage ob das in den nachfolgern von WinXP auch noch klappt!? Oder sollte man das iwie anders machen?

    Peace & Blessed Love C0de4Fun



  • hey,

    char szStartUpPath[MAX_PATH];
    	SHGetFolderPath(NULL,CSIDL_STARTUP, NULL, SHGFP_TYPE_DEFAULT, szStartUpPath);
    

    Minimum operating systems:
    Windows 95 with Internet Explorer 5.0, Windows 98 with Internet Explorer 5.0, Windows 98 Second Edition (SE), Windows NT 4.0 with Internet Explorer 5.0, Windows NT 4.0 with Service Pack 4 (SP4)

    MSDN LINK
    klappt von win 95 - win 7 & ist kürzer / einfacher als deine methode 🙂

    lg



  • Danke dir vielmals!
    Scheint wunderbar zu funktioniern 😋

    Peace & a blessed day



  • Bitte nicht die Standardordner aus der Registry lesen: http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx



  • _Luckie schrieb:

    Bitte nicht die Standardordner aus der Registry lesen: http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx

    Meine volle Zustimmung!
    Sog. "Registry Hacks" sind immer mit Vorsicht zu genießen.. 🕶

    Schließlich gibt es die offiziellen Funktionen:
    -SHGetFolderPath(),
    -SHGetSpecialFolderPath() (seit Win2000 ersetzt durch SHGetFolderPath()),
    -SHGetFolderLocation() und
    -SHGetSpecialFolderLocation() (seit Win2000 ersetzt durch SHGetFolderLocation()).
    Nimm diese, und Du hast die wenigsten Ärger damit! 👍

    Seit Windows Vista und Windows 7 gibt es den Nachfolger "Known Folders" mit SHGetKnownFolderPath(): http://msdn.microsoft.com/en-us/library/bb776911(VS.85).aspx
    Diese werden aber über COM angesprochen!

    Martin



  • _Luckie schrieb:

    Bitte nicht die Standardordner aus der Registry lesen: http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx

    Hey danke fuer den Link :).

    New old Thing schrieb:

    So when there's some setting you want to retrieve, and you don't want to read documentation, what do you do? You search the registry! (Sound familiar? People still do this today.)

    Genau so gings mir au. Einfach mal in der Registry nach startup geschaut und das is dabei rauskommen 🤡

    Peace & a blessed day C0de4fun


Anmelden zum Antworten