{"id":31716,"date":"2019-10-31T21:42:42","date_gmt":"2019-10-31T18:42:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/izmenenie-nastroek-programm-s-sohraneniem-personalnyh-parametrov\/"},"modified":"2019-10-31T21:42:42","modified_gmt":"2019-10-31T18:42:42","slug":"izmenenie-nastroek-programm-s-sohraneniem-personalnyh-parametrov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/izmenenie-nastroek-programm-s-sohraneniem-personalnyh-parametrov","title":{"rendered":"\u00c4ndra programinst\u00e4llningar samtidigt som personliga parametrar bevaras","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h2>Bakgrund<\/h2>\n<p>\nIn a medical organization, solutions based on Orthanc PACS servers and the Radiant DICOM client were implemented. During the configuration, it was found that each DICOM client must be described in PACS servers as follows:<\/p>\n<ul>\n<li>Client Name<\/li>\n<li>AE name (must be unique)<\/li>\n<li>TCP port, which is automatically opened on the client side and accepts DICOM studies from the PACS server (i.e., the server pushes them toward the client \u2013 initiating the connection first)<\/li>\n<li>IP-adress<\/li>\n<\/ul>\n<p>\nAfter configuring the Radiant clients, the following information was received for consideration \u2013 for each client, the software settings with the specified parameters above led to the filling of the file <b>pacs.xml<\/b>, which was located in the user profile (path: <b>%APPDATA%RadiantViewerpacs.xml<\/b>). At the same time, the configuration of one client differed from another by at least two parameters (the AE name was different for everyone, while the port was mostly the same, except for terminal clients working on the same server \u2013 there, ports also had to be assigned differently).<\/p>\n<p>Example of the pacs.xml file <noindex><a rel=\"nofollow\" href=\"https:\/\/drive.google.com\/open?id=1yd5q77gKRafZ2rvp6TWy-k1BKQrbrg6f\">l\u00e4nken<\/a><\/noindex>: <\/p>\n<p>For about six months, everything was fine, the system was up and running\u2026 and then we encountered the \u201c<b>underwater <\/b><b>rocks<\/b>\u00bb:<\/p>\n<ul>\n<li>. We need to introduce several new PACS servers that will replace the old ones (where disk space has started to run out). PACS servers in virtual machines, but that's not the point; <\/li>\n<li>We need to centrally change the unique configurations (with two differing parameters) on 200 machines (their number was regularly increasing); <\/li>\n<li>Given the growth rates of examination volumes, the solution needs to be not a one-time effort, but scalable and regular (for example, once every 3-5 months). <\/li>\n<\/ul>\n<p>\nThe solution is below.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Choosing the toolset for the task<\/h2>\n<p>\nInitially, attempts were made to find a solution that would modify the pacs.xml file on the client side, making changes to the list of PACS servers without touching the AE name and TCP port settings. Windows clients at that time were based on both Windows XP and Windows 7 \u2013 therefore, there were attempts to write something based on VBScript. But alas \u2013 accomplishing such a task proved impossible due to a complete lack of experience in writing anything complex and sophisticated in this language. Attempts to find and rewrite it also did not succeed (it should be noted that there was already another plan in mind, so I didn't spend more than 3-4 hours on VBScript).<\/p>\n<p>In the end, I decided on the following solution:<\/p>\n<ul>\n<li>Samla alla pacs.xml-filer med en gruppolitik p\u00e5 en valfri server i n\u00e4tverksresursen; <\/li>\n<li>\u00c4ndra filerna i bulk (erfarenhet av att l\u00f6sa s\u00e5dana uppgifter har redan funnits - med hj\u00e4lp av Perl); <\/li>\n<li>\u00c4ven uppdatera klientinst\u00e4llningarna med hj\u00e4lp av gruppolitik. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Insamling av filer med hj\u00e4lp av gruppolitik<\/h3>\n<p>\nDen enklaste delen - n\u00e4r en klient loggar in p\u00e5 sin profil k\u00f6rs en .bat-fil med sina r\u00e4ttigheter d\u00e4r det st\u00e5r:<\/p>\n<pre><code class=\"vbscript\">echo off\nIf exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml\n<\/code><\/pre>\n<p>\nP\u00e5 s\u00e5 s\u00e4tt kommer pacs.xml-filer att samlas p\u00e5 servern i en dold resurs, d\u00e4r filnamnen inneh\u00e5ller information om fr\u00e5n vilken dator och vilken anv\u00e4ndare den aktuella konfigurationen kopierades.<\/p>\n<p>Det sv\u00e5raste var att v\u00e4nta p\u00e5 att denna politik skulle till\u00e4mpas p\u00e5 alla anv\u00e4ndare.<\/p>\n<h3>\u00c4ndring av konfigurationer med hj\u00e4lp av ett Perl-skript<\/h3>\n<p>\nVi kommer att beh\u00f6va <noindex><a rel=\"nofollow\" href=\"https:\/\/www.activestate.com\/products\/activeperl\/downloads\/\">Active Perl<\/a><\/noindex> f\u00f6r Windows fr\u00e5n ActiveState, samt modulen XML::Writer som kan installeras med kommandot <b>ppm install XML-Writer<\/b>.<\/p>\n<p>Sj\u00e4lva skriptet blev ganska enkelt:<\/p>\n<pre><code class=\"perl\">use XML::Writer;\n \n# \u00d6ppnar mappen med rapporter, bearbetar listan (tar bort \u00f6verfl\u00f6digt):\n\t$report_dir = \"C:Perl64WORKPACS-xml3\";\n\topendir(DIR, \"$report_dir\") or die \"Kan inte \u00f6ppna mappen med rapporter!\";\n\t@report_files = readdir DIR;\n\tshift (@report_files); # tar bort punkten fr\u00e5n array-elementen (.)\n\tshift (@report_files); # tar bort de tv\u00e5 punkterna fr\u00e5n array-elementen (..)\n#\tprint \"@report_files\";\n\tclosedir(DIR);\n \n# B\u00f6rjar bearbeta filer - en i taget. Beh\u00f6ver l\u00e4sa parameter AET och portnummer i variabler.\nforeach $analiz_file (@report_files) \n{\n\t$full_path_to_file=\"C:Perl64WORKPACS-xml3\".$analiz_file;\n\topen (INFO, $full_path_to_file);\n \n\twhile ($line = )\n\t{\n\t\t# Variablerna $aet och $port inneh\u00e5ller unika data f\u00f6r varje XML-fil:\n\t\tmy ($other1, $aet, $other2, $port, $other3) = split \/\"\/, $line, 5;\n\t\t# Om raden 'listener' hittas har vi n\u00e5tt den \u00f6nskade raden och kan b\u00f6rja skapa en ny XML:\n\t\tif ($other1 =~ 'listener')\n\t\t\t{\n\t\t\t\t# Skapar ny XML med n\u00f6dv\u00e4ndiga f\u00e4lt och data:\n\t\t\t\tmy $writer = XML::Writer-&gt;new(OUTPUT =&gt; 'self', DATA_MODE =&gt; 1, DATA_INDENT =&gt; 2, );\n\t\t\t\t$writer-&gt;xmlDecl('utf-8');\n\t\t\t\t$writer-&gt;startTag('pacs');\n\t\t\t\t$writer-&gt;startTag('listener', ae =&gt; $aet, port =&gt; $port);\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;startTag('hosts');\n\t\t\t\t$writer-&gt;startTag('host', name =&gt; 'MRT', ae =&gt; 'ORTHANC', ip =&gt; 'XX.YY.214.17', ts =&gt; '1.2.840.10008.1.2.1', port =&gt; '4242', maxassoc =&gt; '1', allpres =&gt; '0', search =&gt; '1', protocol =&gt; '1', searchcharset =&gt; '', wildcards =&gt; '3', carets =&gt; '0');\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;startTag('host', name =&gt; 'KT', ae =&gt; 'ORTHANC2', ip =&gt; 'XX.YY.215.253', ts =&gt; '1.2.840.10008.1.2.1', port =&gt; '4242', maxassoc =&gt; '1', allpres =&gt; '0', search =&gt; '1', protocol =&gt; '1', searchcharset =&gt; '', wildcards =&gt; '3', carets =&gt; '0');\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;startTag('host', name =&gt; 'R', ae =&gt; 'ORTHANC3', ip =&gt; 'XX.YY.215.252', ts =&gt; '1.2.840.10008.1.2.1', port =&gt; '4242', maxassoc =&gt; '1', allpres =&gt; '0', search =&gt; '1', protocol =&gt; '1', searchcharset =&gt; '', wildcards =&gt; '3', carets =&gt; '0');\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;startTag('host', name =&gt; 'KT-20180501-20180831', ae =&gt; 'ORTHANC4', ip =&gt; 'XX.YY.215.251', ts =&gt; '1.2.840.10008.1.2.1', port =&gt; '4242', maxassoc =&gt; '1', allpres =&gt; '0', search =&gt; '1', protocol =&gt; '1', searchcharset =&gt; '', wildcards =&gt; '3', carets =&gt; '0');\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;startTag('host', name =&gt; 'KT-20180901-20181130', ae =&gt; 'ORTHANC5', ip =&gt; 'XX.YY.215.250', ts =&gt; '1.2.840.10008.1.2.1', port =&gt; '4242', maxassoc =&gt; '1', allpres =&gt; '0', search =&gt; '1', protocol =&gt; '1', searchcharset =&gt; '', wildcards =&gt; '3', carets =&gt; '0');\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;endTag('hosts');\n\t\t\t\t$writer-&gt;startTag('presets');\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;startTag('lastsearch', dt =&gt; '4', mfid =&gt; '1048592');\n\t\t\t\t$writer-&gt;endTag();\n\t\t\t\t$writer-&gt;endTag('pacs');\n \n\t\t\t\t# S\u00e4tter f\u00e4rdig XML i en variabel:\n\t\t\t\tmy $xml = $writer-&gt;end();\n\t\t\t\t# F\u00f6rbereder filen f\u00f6r skrivning:\n\t\t\t\t$rewritexml = $full_path_to_file;\n\t\t\t\t# Skriver om XML-filer med nya data:\n\t\t\t\topen (NEWXML, \"&gt; $rewritexml\");\n\t\t\t\tprint NEWXML $xml;\n\t\t\t\tclose (NEWXML);\t\t\t\t\n\t\t\t}\n\t}\n \n}\n<\/code><\/pre>\n<p>\nPrincipen f\u00f6r dess arbete:<\/p>\n<ul>\n<li>Vi \u00f6ppnar katalogen d\u00e4r vi har samlat pacs.xml-konfigurationer fr\u00e5n kunder och l\u00e4gger filerna i en array av skal\u00e4rer (@report_files); <\/li>\n<li>I en loop behandlar vi en fil i taget och l\u00e4ser den rad f\u00f6r rad; <\/li>\n<li>Med hj\u00e4lp av split delar vi varje rad i 5 delar, med citattecken som avgr\u00e4nsare; <\/li>\n<li>Vi letar efter raden med ordet listener och placerar i tv\u00e5 variabler unika data f\u00f6r varje fil (AE-kundnamn och TCP-portnummer); <\/li>\n<li>D\u00e4refter skapar vi helt enkelt en ny XML-fil, skriver in de unika parametrarna och s\u00e4tter in det n\u00f6dv\u00e4ndiga antalet PACS-servrar med deras parametrar \u2013 <b>dvs. det vi gjorde det f\u00f6r<\/b>) <\/li>\n<li>Vi skriver \u00f6ver den gamla XML-filen med den nya. <\/li>\n<\/ul>\n<p>\nDet \u00e4r v\u00e4rt att n\u00e4mna att jag faktiskt inte anv\u00e4nder detta skript helt automatiskt \u2013 i grunden kopierar jag de insamlade konfigurationerna till en separat katalog och n\u00e4r jag k\u00f6r skriptet \u00e4ndrar jag dem alla samtidigt. Sedan en stickprovsgranskning \u2013 och konfigurationerna kan spridas tillbaka till maskinerna.<\/p>\n<h3>Spridning av \u00e4ndrade pacs.xml-filer till kunder<\/h3>\n<p>\nDet enklaste som kom mig att t\u00e4nka p\u00e5 var att g\u00f6ra \u00e4ndringar i den redan fungerande .bat-filen, som samlar konfigurationerna fr\u00e5n kunder och l\u00e4gga till raden:<\/p>\n<pre><code class=\"vbscript\">If exist %APPDATA%RadiantViewerpacs.xml copy \/Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml\n<\/code><\/pre>\n<p>\nDen slutliga .bat-filen ser ut s\u00e5 h\u00e4r:<\/p>\n<pre><code class=\"vbscript\">@echo off\nIf exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml\nIf exist %APPDATA%RadiantViewerpacs.xml copy \/Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml\n<\/code><\/pre>\n<p><\/p>\n<h3>Slutsats<\/h3>\n<p>\nS\u00e5 h\u00e4r \u00e4r ett \u201d<b>provisoriskt<\/b>l\u00f6sning. Vi har testat det tv\u00e5 g\u00e5nger redan (i september 2018 och februari 2019), och hittills fungerar det bra. Sj\u00e4lvklart uppdaterar det inte 100% av kunderna, men n\u00e4ra det v\u00e4rdet \u2014 resten g\u00f6r vi p\u00e5 distans. Skriptet p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/drive.google.com\/open?id=1z4aPdZoIxE3DOk9LxfPCg44H20wPH12q\">l\u00e4nken<\/a><\/noindex>.<br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/448270\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u0412 \u043e\u0434\u043d\u043e\u0439 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 PACS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 Orthanc \u0438 DICOM-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 Radiant. \u0412 \u0445\u043e\u0434\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 DICOM-\u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d \u0432 PACS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u0418\u043c\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 AE-\u0438\u043c\u044f (\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e) TCP-\u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 DICOM-\u043e\u0431\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 PACS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0442.\u0435. \u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u0430\u043a \u0431\u044b \u0442\u043e\u043b\u043a\u0430\u0435\u0442 \u0438\u0445 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31716","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u0412 \u043e\u0434\u043d\u043e\u0439 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 PACS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 Orthanc \u0438 DICOM-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 Radiant.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/izmenenie-nastroek-programm-s-sohraneniem-personalnyh-parametrov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u0412 \u043e\u0434\u043d\u043e\u0439 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 PACS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 Orthanc \u0438 DICOM-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 Radiant.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/izmenenie-nastroek-programm-s-sohraneniem-personalnyh-parametrov\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:42:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47\u00c4ndringar av programinst\u00e4llningar med bevarande av personliga parametrar | ProHoster","description":"Bakgrund I en medicinsk organisation implementerade de l\u00f6sningar baserade p\u00e5 PACS-servrar av typen Orthanc och DICOM-klienten Radiant.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/izmenenie-nastroek-programm-s-sohraneniem-personalnyh-parametrov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u0412 \u043e\u0434\u043d\u043e\u0439 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 PACS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 Orthanc \u0438 DICOM-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 Radiant.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/izmenenie-nastroek-programm-s-sohraneniem-personalnyh-parametrov","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:42:42+00:00","article:modified_time":"2019-10-31T18:42:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31716","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 07:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:12:32","updated":"2026-01-21 07:29:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=31716"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31716\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=31716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=31716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=31716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}