quitar puedo programas programa predeterminado para extensiones como cambiar asociar asociacion archivos archivo abrir delphi windows-7 windows-vista registry

puedo - ¿Cómo asociar un programa Delphi con un tipo de archivo, pero solo para el usuario actual?



no puedo cambiar programa predeterminado windows 10 (2)

¿Ha mirado configurarlo en HKEY_CURRENT_USER / Software / Classes según http://support.microsoft.com/kb/257592

Por lo tanto, no puedo asociar mi programa con un tipo de archivo específico sin forzar al usuario pobre a ingresar su contraseña de administrador (puede ser correcto para usuarios domésticos, pero es un problema gigantesco para los usuarios en un entorno corporativo). En este caso, la única solución es hacer la asociación solo para el usuario actual.

Lo he intentado pero algo no funciona.

Si lo entiendo correctamente, tengo que escribir una clave como (digamos) ''.mp3'' en ctCurUserFileExt y escribir algo así como ''mi_archivo''. Luego en ctCurUserClases agrego una clave como esta:

WriteReg_String(RootKey, ctCurUserClases+ ''my_file/shell/open/command'', '''', Application.ExeName+ '' "%L"'', TRUE)

Sin embargo, cuando hago doble clic en el archivo, Windows me pregunta con qué aplicación debe abrirlo.

Aquí están las constantes:

CONST RootKey= ''HKEY_CURRENT_USER''; ctCurUserFileExt= ''/Software/Microsoft/Windows/CurrentVersion/Explorer/FileExts/'; ctCurUserClases = ''/Software/Classes/';


Si desea registrar la asociación para cada usuario, escriba sus datos en

HKEY_LOCAL_MACHINE/Software/Classes

Si desea registrar la asociación solo para el usuario actual, escriba sus datos en

HKEY_CURRENT_USER/Software/Classes

Esta es la forma de hacer esto último:

with TRegistry.Create do try RootKey := HKEY_CURRENT_USER; if OpenKey(''/Software/Classes/.myfile'', true) then WriteString('''', ''MyAppDataFile''); if OpenKey(''/Software/Classes/MyAppDataFile'', true) then WriteString('''', ''My Very Own Text File Type''); if OpenKey(''/Software/Classes/MyAppDataFile/DefaultIcon'', true) then WriteString('''', ''C:/WINDOWS/notepad.exe''); if OpenKey(''/Software/Classes/MyAppDataFile/shell/open/command'', true) then WriteString('''', ''C:/WINDOWS/notepad.exe "%1"''); finally Free; end; SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);

Esto asociará los archivos .myfile, llamados "Mi propio tipo de archivo de texto" para que tengan el ícono de notepad.exe y serán abiertos por notepad.exe. La última línea le dice a Explorer que se ''vuelva a cargar'' para reflejar los cambios realizados en las asociaciones de archivos. Por ejemplo, las vistas de la lista de archivos de Explorer se actualizarán. La función SHChangeNotify se declara en ShlObj.pas , por lo que necesita uses ShlObj .

Observe que el shell/open/command %1 in shell/open/command se expandirá al archivo actual. Por ejemplo, si hace doble clic en C:/some dir/test.myfile , Explorer ejecutará el comando

C:/WINDOWS/notepad.exe "C:/some dir/test.myfile"