2016-09-01 3 views
1

У меня возникла проблема с запуском программы при запуске в 32-разрядной и 8-разрядной версии Windows 8, но она отлично работает на 8 и 8.1 64-битных и другой ОС.Запуск программы при запуске с Windows 8 и 8.1

Я устанавливаю последнюю версию нашего программного обеспечения и устанавливаю новый ключ реестра HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run, который содержит путь к исполняемому файлу ("C: \ Program Files ..... .Exe").

Программа не запускается или отображается в диспетчере задач при попытке запуска/запуска. Другие программы в папке запуска запускаются и запускаются, плюс я тестировал, добавляя notepad.exe, и он был открыт нормально.

Если я запускаю путь из командной строки, он открывается и начинается нормально. Я могу создать пакетный файл, и командный файл будет запущен при запуске, но он все равно не будет запускать EXE из этого командного файла. Если я создам оболочку EXE, которая начнет процесс с этого пути, он запустит EXE, а затем также запустит EXE в пути.

У кого-нибудь есть идеи по поводу того, почему он не будет запускать EXE с пути?

function MethodName(hMSI) 
    NUMBER nOptions, nType, nSize; 
    STRING strPath; 
begin 
    RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); 
    nOptions = REGDB_OPTIONS; 
    nType = REGDB_STRING; 
    REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY; 
    if (RegDBGetKeyValueEx("SOFTWARE\\Temp", "PathLocation", nType, strPath, nSize) < 0) then 
     RegDBGetKeyValueEx("SOFTWARE\\Wow6432Node\\Temp", "PathLocation", nType, strPath, nSize); 
    endif; 
    if (SYSINFO.bIsWow64) then 
     RegDBSetKeyValueEx("SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", "RunKey", nType, strPath, nSize); 
    else 
     RegDBSetKeyValueEx("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "RunKey", nType, strPath, nSize); 
    endif; 
    REGDB_OPTIONS = nOptions; 
end; 
+0

ОАК влияет на это? Вам нужно запустить его как администратор или сделать что-то вроде вуду? – Jason

+0

UAC не влияет на это, он не начинается с включения или выключения. – JTMoney1996

+0

Вы изучали модификацию [HKCU \ Microsoft \ Windows \ CurrentVersion \ Run] (http://www.akadia.com/services/windows_registry.html) вместо HKLM? – Jason

ответ

1

Несколько Hacky способ сделать это, чтобы добавить ярлык на исполняемый файл в %appdata%\Microsoft\Windows\Start Menu\Programs\Startup\.

Для InstallShield, это выглядит, как вы хотите AddFolderIcon функцию:

AddFolderIcon(FOLDER_STARTUP, "The name of the shortcut", "C:\YourProgram.exe", "", "C:\PathTo\YourIcon.ico", 0, "", REPLACE);

гляньте here на полный пример того, как это может быть использовано.

+1

* Они могут удалить этот ярлык *. Это особенность, а не ошибка.Ваше программное обеспечение не принадлежит компьютеру, оно принадлежит фактическому владельцу, а выбор процесса запуска принадлежит пользователю. –

+0

Хороший звонок. Я отредактирую ответ соответствующим образом. – Jason