Wow!
Respekt! Ich bin sehr dankbar für Deine Hilfe!
lg
Racer
Wow!
Respekt! Ich bin sehr dankbar für Deine Hilfe!
lg
Racer
Guten Morgen!
Ich stehe mal mit meinen Kenntnissen an und hoffe das Ihr mir weiterhelfen könnt! Folgendes versuche ich mit AutoIT zu lösen: Es soll unter Windows 10 eine "Verknüpfung" (ist eigentlich keine) unter dem Schnellzugriff (QuickAccess) erstellt bzw. gelöscht werden.
Leider ist es nicht mehr so einfach wie unter Windows 7 wo man einfach einen Link im Profileordner hinterlassen hat
Nach ein bisschen suchen im Internet bin ich auf ein Powershellscript gestossen das zumindest Ordner anpinnen und lösen kann. Das würde mir schon reichen. Schöner wäre es wenn ich es direkt in AutoIT machen kann ohne den Umweg für die Powershell.
Powershell:
###################
# Set-QuickAccess #
###################
#Version: 2017-08-10.01
#Author: johan.carlsson@innovatum.se
<#
.SYNOPSIS
Pin or Unpin folders to/from Quick Access in File Explorer.
.DESCRIPTION
Pin or Unpin folders to/from Quick Access in File Explorer.
.EXAMPLE
.\Set-QuickAccess.ps1 -Action Pin -Path "\\server\share\redirected_folders\$env:USERNAME\Links"
Pin the specified UNC server share to Quick Access in File Explorer.
.EXAMPLE
.\Set-QuickAccess.ps1 -Action Unpin -Path "\\server\share\redirected_folders\$env:USERNAME\Links"
Unpin the specified UNC server share from Quick Access in File Explorer.
.NOTES
Thanks to the below sources for inspiration :)
https://blogs.technet.microsoft.com/heyscriptingguy/2013/04/26/use-powershell-to-work-with-windows-explorer/
https://www.reddit.com/r/sysadmin/comments/6g5hz4/removing_pinned_quick_access_pins_via_powershell/
.LINK
https://gallery.technet.microsoft.com/Set-QuickAccess-117e9a89
#>
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true,Position=1,HelpMessage="Pin or Unpin folder to/from Quick Access in File Explorer.")]
[ValidateSet("Pin", "Unpin")]
[string]$Action,
[Parameter(Mandatory=$true,Position=2,HelpMessage="Path to the folder to Pin or Unpin to/from Quick Access in File Explorer.")]
[string]$Path
)
Write-Host "$Action to/from Quick Access: $Path.. " -NoNewline
#Check if specified path is valid
If ((Test-Path -Path $Path) -ne $true)
{
Write-Warning "Path does not exist."
return
}
#Check if specified path is a folder
If ((Test-Path -Path $Path -PathType Container) -ne $true)
{
Write-Warning "Path is not a folder."
return
}
#Pin or Unpin
$QuickAccess = New-Object -ComObject shell.application
$TargetObject = $QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.Path -eq "$Path"}
If ($Action -eq "Pin")
{
If ($TargetObject -ne $null)
{
Write-Warning "Path is already pinned to Quick Access."
return
}
Else
{
$QuickAccess.Namespace("$Path").Self.InvokeVerb(“pintohome”)
}
}
ElseIf ($Action -eq "Unpin")
{
If ($TargetObject -eq $null)
{
Write-Warning "Path is not pinned to Quick Access."
return
}
Else
{
$TargetObject.InvokeVerb("unpinfromhome")
}
}
Write-Host "Done"
Alles anzeigen
Leider kenne ich mich so gar nicht mit den Objekten aus, aber ich weiß das hier im Forum einige sehr kluge Köpfe gibt die so manches hervorgezaubert haben.
Für Hilfe wäre ich sehr dankbar!
lg
Racer
Danke!
Ich habe es doch gewußt: Ich stehe doch am Schlauch...
ein peinlicher Racer
Hallo!
Mein Problem: Ich habe ein kleines Programm (exe) geschrieben das als Task alle 5 Minuten läuft. Jetzt kommt es aber vereinzelt vor das diese nicht beendet wird (warum ist mir bekannt). Um den entgegenzuwirken ist der Task so eingestellt das nach 1 Stunde der Lauf beendet wird. Das ist aber die kürzeste Zeit die ich einstellen kann!
Jetzt ist mir die Idee gekommen, mehrere Instanzen zuzulassen, aber das erste was abgefragt werden soll läuft schon ein Prozess. Dazu muss ich aber die eigene PID kennen. Gibt es da eine Möglichkeit diese festzustellen? Ich möchte nur sehr ungern über ein Lock-File oder dergleichen gehen.
Mit Prozesslist und den "Namen" kann ich das nicht unterscheiden. Gibt es da noch etwas anderes?
lg
Racer
Mahlzeit!
Das sind hier sehr interessante Ansätze wie man Parameter auswerten kann!
Ohne das ich Eigenwerbung machen möchte: Ich habe vor einiger Zeit eine kleine Funktion für eine Parameterauswertung geschrieben: wenn Du möchtest: hier
Vielleich hilft sie dir!
lg
Racer
Hallo!
Du hast die RSAT-Tools der AD-Userverwaltung...da gibt es ein "Suchen", aber nicht direkt in einer MMC, sondern erst im Snapin!
Wenn Du nach einem AD-Objekt suchen möchtest (Benutzer, Computer,...) dann schaue dir mal für Autoit die Active-Directoy-UDF Active Directory Funktionen - Neue Version 1.4.11.0 freigegeben! an. Hier kannst Du nach Herzenslust Suche und alles sauber in AutoIT scripten!
lg
Racer
Hallo!
Schau mal in die Registierung unter HKEY_CLASSES_ROOT. Dort hast Du alle Dateitype die Assoziiert werden...
vielleicht ist es das was Du suchst!
lg
Racer
Scriptomatic liefert dir alles was du brauchst fix und fertig. Ich habe seit Jahren keine einzige Zeile WMI-Abfragen "zu Fuß" erstellt, wozu auch?! Wenn es doch ein Script gibt, welches einwandfrei funktioniert...
Du könntest das von Scriptomatic erstellte Script benutzen, und damit dein Problem sofort lösen.
Dann könntest du hier fragen, wie Scriptomatic funktioniert und damit deinen persönlichen Level-up schaffen.
Jetzt hast du eine Handvoll "Brocken" vorgeworfen bekommen und ich bezweifle, dass du viel dabei gelernt hast, denn die WMI-Abfrage "zu Fuß" hast du doch sowieso schon (teilweise) per AutoIt und auch per PS selbst erstellt.
Ich gebe Dir schon recht das Scriptomatic ein Werkzeug ist das einem sehr viel Arbeit abnimmt. Aber in diesen speziellen Fall hat es mir nicht weitergeholfen (oder nicht in den Hintern gebissen).
Ich habe mir den Quellcode angesehen und versucht herauzufinden wie Scriptomatic das macht - und das habe ich gemeint ein Level zu hoch.
Eine einfach unflexible Abfrage ist ja kein Problem, überhaupt wenn man es statisch in ein Programm einbetten kann. In meinen Fall muss und möchte ich es etwas dynamischer gestalten und darum gehe ich diesen Umweg.
Powershell ist nicht immer verfügbar (WinPE) und daher möchte ich es lieber native in AutoIT die Aufgabe lösen!
lg
Racer
CodeLocal $strComputer = "." Local $strNameSpace = "root\cimv2" Local $strClass = "Win32_PnPSignedDriver" Local $objClass = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\" & $strNameSpace & ":" & $strClass) For $objClassProperty In $objClass.Properties_ ConsoleWrite($objClassProperty.Name & @CRLF) Next
Das ist ja noch besser....danke schön!
lg
Racer
Micha_he: gemau das was ich wollte! Vielen Dank!
Ich muss gestehen das ich mich nicht gut mit den Objekten auskenne und ich mir da sehr schwer tue.
vielen Dank für Euer Hilfe!
Welche Eigenschaften Dir in Win32_PnPSignedDriver zur Verfügung stehen, findest Du unter :
Ich bin sicher ich verwende die falschen Bezeichungen.
Auf der MS Seite stehen alle Möglichen Felder (String ClassGuidID, CompatID,...) für Win32_PnPSignedDriver. Und ich möchte die Liste nicht erstellen (wie auf der Webseite beschrieben) sondern aus dem System abfragen welche Properties es gibt.
Je nach WIM Anfrage sind es unterschiedliche Felder.
Beispiel:
Bei Win32_PnPDevice gibt es SameElement und SystemElement
Bei Win32_Printer gibe es Attribus, Availability, Comment, uvm.
Je nachdem welche Klasse ich Abfrage, muss ich für die Ausgabe wissen welches Properties es gibt das ich dann in einer Schleife abfragen kann:
ich möchste aber eine Liste aller möglichen Properties von der jeweiligen Klasse. Quasi was kann ich in einer Klasse alles abfragen!
lg
Racer
Ich dürfte mich schlecht bei meiner Frage ausgedrückt habe. Es geht mir nicht darum wie ich eine WMI Abfrage von Win32_PnPSignedDriver nach z.B.: DeviceName mache, sondern wie ich die Angaben "DeviceName, DeviceID,...) bekomme.
Der Vergleich hinkt ein bisschen aber so wie ich aus einen INI-File mit "IniReadSection" die Elemente/Key (wobei ich nur die Elemente möchte) auslesen kann, ohne vorher zu wissen welche es gibt. Ich muss nur den Sectionnamen wissen...
Wie in meinen Beispiel will ich nicht Hardcoded $variable.Description schreiben, ich möchte wenn das geht alle Möglichen Elemente bekommen die bei (Als Beispiel: Win32_PnPSignedDriver) möglich sind.
lg
Racer
PS: WMI ist nicht so mein Fall, sollte ich hier falsch Bezeichnungen verwenden bitte ich gleich um Verzeihung für mein Unwissen
Hallo!
Meine Finger bluten, mein Kopf raucht nach zwei Tagen suchen und am Ende bin ich nicht weitergekommen
Ich hoffe Ihr könnt mir weiterheilfen...
Ich möchte in AutoIT eine WMI-Anfrage stellen und als Antwort eine Liste (Array, Output,...) aller (ich hoffe das stimmt so) Property's bekommen.
Zur Zeit mache ich eine Anfrage so:
local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
$colItems = $objWMIService.ExecQuery('Select * from Win32_PnPSignedDriver')
for $i in $colItems
ConsoleWrite ($i.Description & @crlf)
Next
Das funktioniert auch, aber ich benötige um etwas universeller zu sein alle Felder die ich Auswerten kann - ich hoffe ich drücke mich nicht zu unverständlich aus.
Es geht als um das ".Description" - ich weiß dank WIM-Explore, dass es das gibt, aber es muss ja eine Möglichkeit geben um alle Propertys aufzulisten. Und stehe ich an!
Unter Powershell ist das sehr einfach: Get-WmiObject -Class "Win32_PnPSignedDriver" -Namespace "root\CIMV2" | Get-Member - ich würde aber nur ungern in ein AutoIT Programm wieder den Umweg über die PS gehen.
Ich habe mir auch schon Script-o-Matic angesehen, aber ich muss gestehen das ist doch ein Level zu hoch für mich!
Ein ganz ein kleines Beispiel wie man das löst wäre sehr hilfreich...
lg
Racer
Auch wenn ich das alles noch nicht genau verstehe, es funktioniert bestenes!
Vielen Danke für Eure Hilfe!
lg
Racer
Guten Morgen!
Sorry für meine späte Antwort, bin gestern nicht mehr dazu gekommen...
@Micha_he: vielen Danke, das funktioniert aus.
Ich muss aber sagen das ich die Funktionen nicht ganz verstehe und durch den Beitrag von Autoiter auch jetzt etwas verunsichert bin ob ich immer das richtige Icon ausblende.
autoiter: gibt die Funktion _Get_Systray_Infos() immer die korrekte Instance zurück so das ich den Wert mit Micha_he's Beispiel kombinieren kann, oder muss/soll ich trotzdem das System abfragen (Windows 7/10) und dementsprechend die Instanz setzen?
lg
Racer
Ja, das meine ich!
Wenn Du in der Console "c:\windows\system32\PresentationSettings.exe /start" aufrufst hast Du nicht das Fenster sondern nur das Symbol. Und genau das möchte ich verstecken.
lg
Racer
Sorry für meine späte Rückmeldung, aber zur Zeit ist viel zu tun!
Micha_he: Leider funktioniert das Ausblenden mit Deinen Funktionen nicht (mehr?) unter Windows 10 - oder ich mache was falsch
in die Varable $sTitle habe ich den Programmnamen / Prozessnamen / Titelnamen ,... geschrieben, aber es wird nicht gefunden.
Habe ich da eine Fehler gemacht???
lg
Racer
vielen Dank!
Ich werde es testen und berichten!
lg
Racer
Hallo!
Ich habe eine kleines "optisches" Problem und hoffe ihr könnt mir weiterhelfen. Es gibt das schöne Programm unter %windir%\system32\PresentationSettings.exe (nur Windows PRO/Enterprise/...). Das Programm kann entweder auf "mobilen" Geräten oder nachdem man zwei RegKey setzt auf jeden Windows-Client aufrufen.
Was macht das Tool: Hier kann man z.B.: den Bildschirmschoner für eine Präsentation ausschalten, Lautstärke einstellen...
Soweit funktioniert das alles. Ich habe dazu ein kleines Autoit-Script geschrieben das ein bißchen die Steuerung darüber übernehmen soll. Im Großen und Ganzen wird mit einem RUN-Befehl das Programm gestartet. Soweit funktioniert das auch alles, nur es wird in der Taskleiste auch das Symbol (mit Kontextmenu) angezeigt.
Ich würde gerne das Symbol ausblenden, weiß aber nicht wie. Den Prozess mit @sw_hide starten hilft hier leider nicht.
Gibt es da eine Möglichkeit oder muss ich damit Leben wie es ist!
lg
Racer
Hallo!
Da ich auch mit Schulen zu tun habe und auch dort die selbe Aufgabe gestellt worden ist (Bei Schularbeiten, Tests,.. kein Internet) wurde das so gelöst: Der Lehrer hat ein Tool mit dem er seinen EDV-Saal einen falschen Proxy zuteilen kann...Damit kann kein Schüler mehr ins Internet!
Die Benutzer der Schüler sind so stark eingeschränkt das diese auch nichts ändern können. Das Ganze funktioniert aber auf einer sehr komplexen Struktur und einer über viele Jahre entwicklten Funktions- und Programmstruktur. Daher kann ich Dir kein Script anbieten.
Wie sich das Office 365 verhält wenn der Userproxy weg ist, kann ich Dir leider auch nicht sagen...
lg
Racer